84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
人生最曼妙的风景,竟是内心的淡定与从容!
我觉得你的说法是对的。
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()
我觉得你的说法是对的。
Output:
说明线程确实是退出了。
或许作者只是想演示创建线程池来限制可以开启的线程数量,并没有做完整的项目考虑。例如线程池里面的线程肯定要能够重用,不能频繁的创建关闭;线程池的大小能够动态适应,当有一定数量的空闲线程就关掉部分,当线程都泡满了还不够用的时候,适当添加一些线程。具体,我觉得可以去查找相关的资料,肯定有解决方案。
他没有在主线程中写
q.join()