python多线程

python多线程

ID:36675638

大小:142.01 KB

页数:12页

时间:2019-05-13

python多线程_第1页
python多线程_第2页
python多线程_第3页
python多线程_第4页
python多线程_第5页
资源描述:

《python多线程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Python多线程学习一、Python中的线程使用:Python中使用线程有两种方式:函数或者用类来包装线程对象。1、函数式:调用thread模块中的start_new_thread()函数来产生新线程。如下例:viewplaincopytoclipboardprint?1importtime2importthread3deftimer(no,interval):4cnt=05whilecnt<10:6print'Thread:(%d)Time:%s'%(no,time.ctime())7time.sleep(interval)8cnt+=19thread.exit_

2、thread()101112deftest():#Usethread.start_new_thread()tocreate2newthreads13thread.start_new_thread(timer,(1,1))14thread.start_new_thread(timer,(2,2))1516if__name__=='__main__':17test()上面的例子定义了一个线程函数timer,它打印出10条时间记录后退出,每次打印的间隔由interval参数决定。thread.start_new_thread(function,args[,kwargs])的第一

3、个参数是线程函数(本例中的timer方法),第二个参数是传递给线程函数的参数,它必须是tuple类型,kwargs是可选参数。线程的结束可以等待线程自然结束,也可以在线程函数中调用thread.exit()或thread.exit_thread()方法。2、创建threading.Thread的子类来包装一个线程对象,如下例:viewplaincopytoclipboardprint?1importthreading2importtime3classtimer(threading.Thread):#Thetimerclassisderivedfromtheclassthr

4、eading.Thread4def__init__(self,num,interval):5threading.Thread.__init__(self)6self.thread_num=num7self.interval=interval8self.thread_stop=False910defrun(self):#Overwriterun()method,putwhatyouwantthethreaddohere11whilenotself.thread_stop:12print'ThreadObject(%d),Time:%s'%(self.thread_num

5、,time.ctime())13time.sleep(self.interval)14defstop(self):15self.thread_stop=True161718deftest():19thread1=timer(1,1)20thread2=timer(2,2)21thread1.start()22thread2.start()23time.sleep(10)24thread1.stop()25thread2.stop()26return2728if__name__=='__main__':29test()就我个人而言,比较喜欢第二种方式,即创建自己的线程类,必

6、要时重写threading.Thread类的方法,线程的控制可以由自己定制。threading.Thread类的使用:1,在自己的线程类的__init__里调用threading.Thread.__init__(self,name=threadname)Threadname为线程的名字2,run(),通常需要重写,编写代码实现做需要的功能。3,getName(),获得线程对象名称4,setName(),设置线程对象名称5,start(),启动线程6,jion([timeout]),等待另一线程结束后再运行。7,setDaemon(bool),设置子线程是否随主线程一起结束

7、,必须在start()之前调用。默认为False。8,isDaemon(),判断线程是否随主线程一起结束。9,isAlive(),检查线程是否在运行中。此外threading模块本身也提供了很多方法和其他的类,可以帮助我们更好的使用和管理线程。可以参看http://www.python.org/doc/2.5.2/lib/module-threading.html。假设两个线程对象t1和t2都要对num=0进行增1运算,t1和t2都各对num修改10次,num的最终的结果应该为20。但是由于是多线程访问,有可能出现下面情况:在

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。