问题:在使用multiprocessing.Queue进行多进程传递数据时,明明进程已经执行完毕,却在执行join()时发生不明阻塞。
代码:
from multiprocessing import Process, Queue, current_process
def main():
plist = []
queue = Queue()
for i in range(8):
plist.append(Process(target=run, args=(queue,)))
for i in plist:
i.start()
for i in plist:
# 在这里被阻塞
print(i.name + "----join")
i.join()
while not queue.empty():
print(queue.get())
def run(queue):
# 64以及以下正常结束 65以及以上阻塞
# 出问题数量似乎和put内容的大小有关
for i in range(64):
queue.put("123---")
print(current_process().name + "--end")
if __name__ == "__main__":
main()
正常运行结果:
因不明