单线程

# -*- coding: utf-8 -*-
#python 27
#xiaodeng
#线程和进程
#http://www.cnblogs.com/fnng/p/3670789.html

#单线程时代:
#这里其实是2个进程,两者之间没有关联的2个进程,分别按照先后顺序在运行
from time import sleep,ctime

def music():
    for i in range(2):
        print ‘i was listening to music. %s‘%ctime()
        sleep(1)

def move():
    for i in range(2):
        print ‘i was at the movies! %s‘%ctime()
        sleep(5)

if __name__==‘__main__‘:
    music()#进程1
    move()#进程2
    print ‘All over %s‘%ctime()#输出为:Thu Nov 05 12:01:06 2015

‘‘‘
i was listening to music. Thu Nov 05 12:00:54 2015
i was listening to music. Thu Nov 05 12:00:55 2015
i was at the movies! Thu Nov 05 12:00:56 2015
i was at the movies! Thu Nov 05 12:01:01 2015
All over Thu Nov 05 12:01:06 2015
‘‘‘

print ‘##‘*20
#music()和move()更应该被看作是音乐和视频播放器,至于要播放什么歌曲和视频应该由我们使用时决定
#对上面的代码进行改造~~
import threading
from time import ctime,sleep

def music(func):
    for i in range(2):
        print ‘listening to %s. %s‘%(func,ctime())
        sleep(1)

def move(func):
    for i in range(2):
        print ‘i love look %s.%s‘%(func,ctime())
        sleep(5)

if __name__==‘__main__‘:
    music(u‘大悲咒‘)
    move(u‘大秦帝国‘)#这里u在前面,这个变量就是unicode编码,不用解码。
    print ‘over:%s‘%ctime()

‘‘‘
listening to 大悲咒. Thu Nov 05 12:17:13 2015
listening to 大悲咒. Thu Nov 05 12:17:14 2015
i love look 大秦帝国.Thu Nov 05 12:17:15 2015
i love look 大秦帝国.Thu Nov 05 12:17:20 2015
over:Thu Nov 05 12:17:25 2015
‘‘‘
时间: 2024-10-11 17:20:09

单线程的相关文章

Javascript引擎单线程机制及setTimeout执行原理说明

setTimeout用法在实际项目中还是会时常遇到.比如浏览器会聪明的等到一个函数堆栈结束后才改变DOM,如果再这个函数堆栈中把页面背景先从白色设为红色,再设回白色,那么浏览器会认为DOM没有发生任何改变而忽略这两句话,因此我们可以通过setTimeout把“设回白色”函数加入下一个堆栈,那么就可以确保背景颜色发生过改变了(虽然速度很快可能无法被察觉). 总之,setTimeout增加了Javascript函数调用的灵活性,为函数执行顺序的调度提供极大便利. 然后,我们从基础的层面来看看:理解J

redis单线程问题

1.redis的单线程指的是什么单线程?同一个时间点只处理一个客户端的连接,也就是redis网络模块的单线程. 2.redis为什么设计成单线程 具体作者怎么想的,我不知道,我说一下我的理解(1)redis用的是非阻塞IO,非阻塞I/O本身就可以是单线程处理多个请求(2)如果用多线程,就要考虑线程的上下文切换,和锁的请求和释放,这些操作也比较耗时,锁等待更容易把业务线程池占满(3)在我看来,Redis的设计理念就是短平快,在保证完全内存计算的情况下,能串行的地方就串行,在处理socket请求这块

c# 异步任务队列(可选是否使用单线程执行任务,以及自动取消任务)

使用demo,(.net framework 4.0 自行添加async wait 扩展库) class Program { static void Main(string[] args) { Console.WriteLine("主线程"+Thread.CurrentThread.ManagedThreadId); var asyncTaskQueue = new AsyncTaskQueue { AutoCancelPreviousTask = true, // 自动取消之前的任务

单线程的REDIS为什么这么快?

REDIS是单线程处理所有请求,和一般经典实际上推荐的方式相反,那么单线程串行处理,为什么依然能够做到很快呢?知乎上的一个答案如下,其中线程切换和锁不是性能主要影响因素的观点和一般的答案都不同: 作者:杨海坡链接:https://www.zhihu.com/question/19764056/answer/20241839来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 纯内存数据库,如果只是简单的 key-value,内存不是瓶颈.一般情况下,hash 查找可以达

单线程的JS引擎

先来思考一个问题,JS 是单线程的么?为什么单线程的JavaScript却能让AJAX异步发送和回调请求,还有setTimeout也看起来像是多线程的?还有non-blocking IO, event loop等概念. 目录: JS单线程 浏览器多线程 setTimeout(func, 0) 的应用场景 setTimeout与setInterval 参考资料 TODO: 接下来,梳理JS的并发模型与 Event Loop https://developer.mozilla.org/zh-CN/d

单线程 异步 同步 阻塞 非阻塞

Javascript是单线程的深入分析 首先一个引子:为什么JavaScript是单线程的却能让AJAX异步发送和回调请求,还有setTimeout也看起来像是多线程的? 先看例子1: 1 function foo() { 2 console.log( 'first' ); 3 setTimeout( ( function(){ console.log( 'second' ); } ), 5); 4 } 5 for (var i = 0; i < 1000000; i++) { 6 foo();

单线程你别阻塞,Redis时延问题分析及应对

单线程你别阻塞,Redis时延问题分析及应对 Redis的事件循环在一个线程中处理,作为一个单线程程序,重要的是要保证事件处理的时延短,这样,事件循环中的后续任务才不会阻塞: 当redis的数据量达到一定级别后(比如20G),阻塞操作对性能的影响尤为严重: 下面我们总结下在redis中有哪些耗时的场景及应对方法: 耗时长的命令造成阻塞 keys.sort等命令 keys命令用于查找所有符合给定模式 pattern 的 key,时间复杂度为O(N), N 为数据库中 key 的数量.当数据库中的个

Java String字符串/==和equals区别,str。toCharAt(),getBytes,indexOf过滤存在字符,trim()/String与StringBuffer多线程安全/StringBuilder单线程—— 14.0

课程概要 String 字符串 String字符串常用方法 StringBuffer StringBuilder String字符串: 1.实例化String对象 直接赋值  String str="Hello";  推荐这种 使用关键字new  String str1=new String("Hello"); 在内存中开辟2个空间 如图: 源代码 StringDemo01.java 2.String内容的比较 String str="Hello"

单线程02

# -*- coding: cp936 -*- #python 27 #xiaodeng #http://www.cnblogs.com/fnng/p/3489321.html #在单线程中顺序执行两个循环.一定要一个循环结束后,另一个才能开始.总时间是各个循环运行时间之和 from time import sleep,ctime def loop0(): print 'loop 0:',ctime() sleep(4) def loop1(): print 'loop 1:',ctime()

磁盘IO单线程顺序写时最快的,如果多线程写,磁盘的磁头要不断重新寻址,所以写入速度反而会慢

(1) 读写最好还是不要多线程,硬盘读写的速度有限,单线程时已经满负荷了,多线程又会增加线程之间的切换,会增加时间. 如果想增加读写速度,应该增加硬盘,做raid (2)首先是硬盘的写入是串行的,CPU的计算才是并行的,如果你偏重计算那么多线程能提高,要不怎么叫做并行计算呢: 如果侧重存储,除非数据量达到足以体现优势的程度,否则加上线程之间切换的损耗当然会效率更加地下. (3)这个是按照算法来说的,目前来说大多数的算法都是很快的,瓶颈都在磁盘的IO上,我们针对大多数的算法都进行过测试,基本一半以