多线程 - 关于Python Cookbook中创建线程池代码的一个bug?
黄舟
黄舟 2017-04-18 10:04:12
0
3
361
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

Antworte allen(3)
左手右手慢动作

我觉得你的说法是对的。

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()

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!