0
我不知道为什么下面的代码工作。我停留在部分多线程增量了解订购
for t in worker_threads:
t.join()
对我来说,这一切都为等待每个worker
线程.put(1)
到counter_queue
。
我不太确定这些行的目的是否为del t
立即销毁它们。我可能会丢失这些重复行的意义:
t = threading.Thread(target=print_manager)
t.daemon = True
t.start()
del t
有什么我缺少关于.daemon
标志?还是还有别的东西?
import threading, queue
###########################################################################################
counter = 0
counter_queue = queue.Queue()
def counter_manager():
'I have EXCLUSIVE rights to update the counter variable'
global counter
while True:
increment = counter_queue.get()
counter += increment
print_queue.put([
'The count is %d' % counter,
'---------------'])
counter_queue.task_done()
t = threading.Thread(target=counter_manager)
t.daemon = True
t.start()
del t
###########################################################################################
print_queue = queue.Queue()
def print_manager():
'I have EXCLUSIVE rights to call the "print" keyword'
while True:
job = print_queue.get()
for line in job:
print(line)
print_queue.task_done()
t = threading.Thread(target=print_manager)
t.daemon = True
t.start()
del t
###########################################################################################
def worker():
'My job is to increment the counter and print the current count'
counter_queue.put(1)
print_queue.put(['Starting up'])
worker_threads = []
for i in range(10):
t = threading.Thread(target=worker)
worker_threads.append(t)
t.start()
for t in worker_threads:
t.join()
counter_queue.join()
print_queue.put(['Finishing up'])
print_queue.join()
输出:
Starting up
The count is 1
---------------
The count is 2
---------------
The count is 3
---------------
The count is 4
---------------
The count is 5
---------------
The count is 6
---------------
The count is 7
---------------
The count is 8
---------------
The count is 9
---------------
The count is 10
---------------
Finishing up