问题描述
我想做的是打印出以下程序:
Running Main
Running Second
Running Main
Running Second
[...]
代码:
from multiprocessing import Process
import time
def main():
while True:
print('Running Main')
time.sleep(1)
def second():
while True:
print('Running Second')
time.sleep(1)
p1 = Process(main())
p2 = Process(second())
p1.start()
p2.start()
但它没有所需的行为。相反,它只是打印出来:
Running Main
Running Main
[...]
我怀疑我的程序因为 while
语句而无法运行?
有什么办法可以克服这个问题,并且无论我在函数中执行什么,都可以让我的程序打印出我提到的内容?
解决方法
这里的问题似乎是当你制作过程变量时。我怀疑进程包含运行第一个函数的原因是语法。我的解释是,与其从函数中创建进程,不如创建一个专门执行函数的进程。
当你想创建 Process 对象时,你想避免使用这个
p1 = Process(target=main())
而是写
p1 = Process(target=main)
这也意味着如果你想为函数包含任何输入,你必须
p1 = Process(target=main,args=('hi',))