[英]python multiprocessing does not run at same time
我正在尝试制作一个python程序,该程序在一个无限循环中同时运行多个进程,但是一次只能执行一个进程,第一个在代码中执行,然后其余程序将无法运行。 我需要做什么才能使两个过程和主要过程同时执行?
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())
您的问题的原因在于以下几行:
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
提供其输入参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.