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

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

répondre à tous(3)
左手右手慢动作

Je pense que tu as raison.

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

Sortie :

Indique que le fil de discussion est effectivement terminé.

黄舟

Peut-être que l'auteur voulait simplement démontrer la création d'un pool de threads pour limiter le nombre de threads pouvant être ouverts, et n'a pas pris en compte l'ensemble du projet. Par exemple, les threads du pool de threads doivent être réutilisables et ne peuvent pas être créés et fermés fréquemment ; la taille du pool de threads peut être adaptée dynamiquement lorsqu'il y a un certain nombre de threads inactifs, certains seront arrêtés. sont pleins et il n'y en a pas assez, il convient d'ajouter quelques discussions. Plus précisément, je pense que si vous parvenez à rechercher des informations pertinentes, il y aura certainement une solution.

阿神

Il n'a pas écrit dans le fil principalq.join()

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!