python学习系列之多线程
2015-08-20 19:05
936 查看
一.多线程学习
python提供了两个模块来实现多线程thread 和threading ,thread 有一些缺点,在threading 得到了弥补。所以我们直接学习threading即可。
创建线程:
启动线程:
二.threading的setDaemon、join的用法
1.t.setDaemon(True)
主线程A中,创建了子线程B,并且在主线程A中调用了B.setDaemon(True),这个的意思是,把主线程A设置为守护线程,这时候,要是主线程A执行结束了,就不管子线程B是否完成,一并和主线程A退出
2.t.join()
主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行
注:join([timeout]) 里面的参数时可选的,代表线程运行的最大时间,即如果超过这个时间,不管这个此线程有没有执行完毕都会被回收,然后主线程或函数都会接着执行的。
python提供了两个模块来实现多线程thread 和threading ,thread 有一些缺点,在threading 得到了弥补。所以我们直接学习threading即可。
创建线程:
t=threading.Thread(target=函数名,args=(u'',u'',...))
启动线程:
t.start()
二.threading的setDaemon、join的用法
1.t.setDaemon(True)
主线程A中,创建了子线程B,并且在主线程A中调用了B.setDaemon(True),这个的意思是,把主线程A设置为守护线程,这时候,要是主线程A执行结束了,就不管子线程B是否完成,一并和主线程A退出
2.t.join()
主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行
注:join([timeout]) 里面的参数时可选的,代表线程运行的最大时间,即如果超过这个时间,不管这个此线程有没有执行完毕都会被回收,然后主线程或函数都会接着执行的。
import threading from time import ctime,sleep def music(name,age): for i in range(3): print "i was listening %s %s %s" %(name,age,ctime()) sleep(2) def move(address): for i in range(3): print "i was at %s %s" %(address,ctime()) sleep(5) threads=[] t1=threading.Thread(target=music,args=(u'love',u'age')) threads.append(t1) t2=threading.Thread(target=move,args=(u'shuyang',)) threads.append(t2) if __name__=='__main__': for t in threads: t.setDaemon(True) t.start() print "all over %s" %ctime()
相关文章推荐
- python 模块
- Python循环语句
- CNN 逐层可视化 Ipython Notebook
- python版的mapreduce程序运行在hadoop上
- python paramiko
- nagios3 添加Python编写的插件
- python调用C动态库导出函数的返回值为指针类型时,在64位python环境下被截断解决方法
- Python定时调度--多任务同一时间开始跑 scheduler.enterabs
- python数据类型详解
- 安装numpy和matplotlib简单又不易出错的方法
- python的sorted函数对字典按key排序和按value排序
- LeetCode 135:candy 题解 Python
- python 获取股票的交易数据
- Quick to learn Python rules
- Python中的urllib2
- python开发之Tkinter可视化
- ubuntu下安装numpy,matplotlib
- python+Eclipse+pydev环境搭建
- python __name__ == '__main__'解析
- python __init__.py文件的作用