扫码关注官方订阅号
人生最曼妙的风景,竟是内心的淡定与从容!
我觉得你的说法是对的。
import time from Queue import Queue from threading import Thread, activeCount G_WORKER_NUM = 1 G_COUNTER = 1 def do_something(q): q.get() global G_COUNTER G_COUNTER += 1 print(G_COUNTER) def main(): q = Queue() for n in xrange(G_WORKER_NUM): t = Thread(target=do_something, args=(q,)) t.start() q.put(('anything',)) q.put(('anything',)) q.put(('anything',)) if __name__ == '__main__': main() time.sleep(2) print activeCount()
Output:
说明线程确实是退出了。
或许作者只是想演示创建线程池来限制可以开启的线程数量,并没有做完整的项目考虑。例如线程池里面的线程肯定要能够重用,不能频繁的创建关闭;线程池的大小能够动态适应,当有一定数量的空闲线程就关掉部分,当线程都泡满了还不够用的时候,适当添加一些线程。具体,我觉得可以去查找相关的资料,肯定有解决方案。
他没有在主线程中写q.join()
q.join()
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我觉得你的说法是对的。
Output:
说明线程确实是退出了。
或许作者只是想演示创建线程池来限制可以开启的线程数量,并没有做完整的项目考虑。例如线程池里面的线程肯定要能够重用,不能频繁的创建关闭;线程池的大小能够动态适应,当有一定数量的空闲线程就关掉部分,当线程都泡满了还不够用的时候,适当添加一些线程。具体,我觉得可以去查找相关的资料,肯定有解决方案。
他没有在主线程中写
q.join()