无论这些函数运行什么,我都可以同时运行两个函数吗?

问题描述

我想做的是打印出以下程序:

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',))