码迷,mamicode.com
首页 > 编程语言 > 详细

python 多线程

时间:2017-10-04 00:23:56      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:cli   eve   splay   需要   执行   str   ima   join()   目录   

Python模块:threading

目录 00x1 多线程基础讲解
 00x2 简单多线程案例

 00x1 多线程基础讲解

要使用多线程的函数可以实例化一个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
View Code

按照我惯例最后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 多线程

标签:cli   eve   splay   需要   执行   str   ima   join()   目录   

原文地址:http://www.cnblogs.com/xishaonian/p/7624736.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!