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



我正在使用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)

您将看到预期的输出。

相关内容

  • 没有找到相关文章

最新更新