我正在使用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')
答案 0 :(得分:2)
您的程序运行正常。您只是从其中一个进程获得了大量的尾随输出,因为繁忙的循环不会串联运行。尝试将test1和test2更改为:
from time import sleep
for i in range(1000):
print('test2')
sleep(0.1)
你会看到你的预期输出。