我正在尝试创建一个python程序,它同时在一个无限循环中运行多个进程,但是一次只执行一个进程,代码中的第一个进程,然后程序的其余部分将不会运行。我需要做些什么来使procceses和主要的procceses同时执行?
from multiprocessing import *
import time
def test1(q):
while True:
q.put("Banana")
time.sleep(2)
def test2(q):
while True:
q.put("internet")
time.sleep(3)
if __name__ == "__main__":
q = Queue()
t1 = Process(target=test1(q))
t2 = Process(target=test2(q))
t1.start()
t2.start()
q.put("rice")
while True:
print(q.get())
答案 0 :(得分:4)
问题的原因在于以下几行:
t1 = Process(target=test1(q))
t2 = Process(target=test2(q))
您实际上会分别拨打test1
和test2
(即使您永远不会拨打test2
电话)。运行函数后,它将使用返回结果target
。你想要的是:
t1 = Process(target=test1, args=(q,))
t2 = Process(target=test2, args=(q,))
因此,您不希望实际运行test1
和test2
函数,而是将它们的引用(地址)用作target
,然后您必须在其中提供它们的输入参数单独的参数args
。