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

python thread 多线程

时间:2016-10-24 20:54:57      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:new   import   app   end   函数   模块   tar   执行   退出   

thread 模块在python3中改为_thread,网上的各种帖子都说不建议新手使用thread,好吃不好吃总得尝尝看。

 1 import _thread
 2 
 3 def print_num():
 4     for i in range(100):
 5         print(i)
 6 
 7 _thread.start_new_thread(print_num,())
 8 _thread.start_new_thread(print_num,())
 9 _thread.start_new_thread(print_num,())
10 _thread.start_new_thread(print_num,())

你猜运行结果是什么?

啥结果也没有。。。。。。因为主线程没有做任何事情直接就结束了。主线程退出的同时子线程没来得及运行就挂了,

也就是说主线成不会等待子线程执行完才退出。

下面线程锁出场了。

_thread.allocate_lock()生成一个锁,在线程函数开始的时候锁住,结束的时候解锁,主线成通过判断锁的状态决定是否退出。

 1 import _thread
 2 
 3 def print_num(lock):        #线程函数
 4     
 5     for i in range(100):
 6         print(i)
 7     lock.release()
 8 
 9 #生成5把锁
10 locks = []
11 for i in range(5):
12     lock = _thread.allocate_lock()
13     lock.acquire()
14     locks.append(lock)
15 #启动5个线程,每人一把锁
16 for i in range(len(locks)): 
17     _thread.start_new_thread(print_num,(locks[i],))
18 
19 #主线程分别监视每个锁的状态,知道所有的锁都不是锁定状态,退出
20 for i in range(len(locks)):
21     while locks[i].locked():
22         pass

 

python thread 多线程

标签:new   import   app   end   函数   模块   tar   执行   退出   

原文地址:http://www.cnblogs.com/vawter/p/5994233.html

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