python 多线程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 多线程相关的知识,希望对你有一定的参考价值。
Python模块:threading
要使用多线程的函数可以实例化一个Thread对象,每个Thread对象代表着一个线程,可以通过start()方法,开始运行。
t = threading.Thread(target=worker) #将worker函数实例化为Thread对象 t.start() #实例化以后需要开始这个线程
由于python的多线程是伪多线程(并非真正意义的多线程)所以其线程并发出来的结果呈无规律状态。比如如下代码:
#!/usr/bin/python # -*- coding: UTF-8 -*- #by def import threading def qwe(): print 1 a = threading.Thread(target=qwe) b = threading.Thread(target=qwe) a.start() b.start() print ‘def‘
按照我惯例最后print的应该是最后输出才对,但实际运行了并非如此
之所以说python的多线程是伪的多线程就是因为如此。真正的多线程好比花了好几个人同时去工作直至把他做完。而python只是一个人只做一点就丢给另外一个人。每个人做一点,所以在很多时候就会导致线程还没有执行完毕就执行线程以外的东西。这里就引进了一个join。相当于一个线程的分界线,告诉Thread给你的任务先做完了你才能执行下面的代码。不然就打死你。
如此代码:
#!/usr/bin/python # -*- coding: UTF-8 -*- #by def import threading def qwe(): print 1 a = threading.Thread(target=qwe) b = threading.Thread(target=qwe) //两个线程 a.start() b.start() a.join() #加上join了以后就不会逾越这个分界线了 b.join() print ‘def‘
但当线程有参数的时候呢?
#!/usr/bin/python import threading import time def worker(): print "worker" time.sleep(1) return for i in xrange(5): t = threading.Thread(target=worker) t.start()
t.jion()
以上是关于python 多线程的主要内容,如果未能解决你的问题,请参考以下文章