我正在使用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 都有打印语句。它所需的行为是连续打印"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')
您的程序运行良好。您只是从其中一个进程中获得大量尾随输出,因为繁忙的循环不会同时运行。尝试将 test1 和 test2 更改为以下内容:
from time import sleep
for i in range(1000):
print('test2')
sleep(0.1)
您将看到预期的输出。