博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python thread 多线程
阅读量:5158 次
发布时间:2019-06-13

本文共 1002 字,大约阅读时间需要 3 分钟。

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

 

转载于:https://www.cnblogs.com/vawter/p/5994233.html

你可能感兴趣的文章
MongoRepository动态代理及jpa方法解析源码分析
查看>>
bzoj2015 [Usaco2010 Feb]Chocolate Giving
查看>>
bzoj1651[Usaco2006 Feb]Stall Reservations 专用牛棚
查看>>
spring中InitializingBean接口使用理解
查看>>
团队合作之Scrum
查看>>
关于开发和测试沟通的一些问题
查看>>
Redis教程_2
查看>>
通过java给qq邮箱发送信息
查看>>
style、currentStyle、getComputedStyle区别介绍
查看>>
Python List(列表)使用示例
查看>>
poj-3069-Saruman's Army
查看>>
webstorm的破解
查看>>
C#中创建线程,创建带参数的线程
查看>>
让 VS2010 支持 HTML5 和 CSS3.0
查看>>
eclipse 中过滤空包,目录树中不显示。
查看>>
test
查看>>
从 PHP 到 Java
查看>>
OpenOffice 实现OFFICE在线预览
查看>>
Stardew Valley(星露谷物语)Mod开发之路 写在前面
查看>>
链表使用指针充分利用内存 手打分配(摈弃系统动态分配:new/delete)
查看>>