使用Python子流程模块在并行流程中打印

时间:2018-04-17 10:50:06

标签: python-3.x multiprocessing subprocess

我正在使用python子进程,如下所示。

import subprocess


p1 = subprocess.Popen(['python', 'test1.py'])
p2 = subprocess.Popen(['python', 'test2.py'])

p1.wait()
p2.wait()

print('The main and sub-processes are finished')

test1.py和test2.py都有一个print语句。其理想的行为是连续打印'test1'或'test2'。

我期待一种混合的输出,因为它们并行运行。但是,我只看到'test1':

test1
test1
test1
and so on. 

我在这里缺少什么?

所需的输出:两个打印语句都应该在STDOUT上。

注意:这是一个非常简单的问题示例。 注意:想象一下test1和test2看起来像这样。

test1.py:

for i in range(100000):
    print('test1')

test2.py:

for i in range(100000):
    print('test2')

1 个答案:

答案 0 :(得分:2)

您的程序运行正常。您只是从其中一个进程获得了大量的尾随输出,因为繁忙的循环不会串联运行。尝试将test1和test2更改为:

from time import sleep

for i in range(1000):
    print('test2')
    sleep(0.1)

你会看到你的预期输出。