进程应该在将给定范围内的数字除以6时将其写入队列。这一切都很好,直到maxrange停止执行时才变得大于8231 + tr(进程数)(我得到的'做完了之后,最终答案永远不会到来。
我正在Windows 10上运行python 3.6。我尝试为添加的部分添加一个锁,但它没有任何改变。
from multiprocessing import Process, Queue
def f(q, x, y):
for i in range(x, y):
if i%6 == 0:
q.put(i)
print('DONE')
if __name__ == '__main__':
tr = 6
maxrange = 8238
q = Queue()
r1 = int(maxrange/tr)
print('.')
threads = []
for x in range(0, tr):
p = Process(target=f, args=(q,r1*x, r1*(x+1)))
threads.append(p)
p.start()
for t in threads:
t.join()
while not q.empty():
print(q.get())
我希望它能打印出该范围内所有可被6整除的自然数,但是某些过程永远无法完成。