在python中分叉进程

时间:2015-09-02 12:56:21

标签: python

我已将问题更新为更清楚了 我想在后台打印数字时执行功能并检查条件。

import time

number = [1,100]
t0 = time.time()
for i in number:
    print i
t1= time.time()


def sum_two_numbers():
   t2 = time.time()
   c=1+2
   t3 =time.time()


verify t0<t2 and t3<<t1

1 个答案:

答案 0 :(得分:1)

由于这两个脚本完全独立,只需使用subprocess.Popen()

import subprocess

script1 = subprocess.Popen(['/path/to/script1', 'arg1', 'arg2', 'etc'])
script2 = subprocess.Popen(['/path/to/script2', 'arg1', 'arg2', 'etc'])

就是这样,两个脚本都在后台运行 1 。如果您要等待其中一个完成,请根据需要致电script1.wait()script2.wait()。例如:

import subprocess

script1 = subprocess.Popen(['sleep', '30'])
script2 = subprocess.Popen(['ls', '-l'])
script1.wait()

您会发现脚本2将生成其输出并在脚本1之前终止。

如果你需要捕获任一子进程的输出,那么你将需要使用管道,然后事情变得更复杂。

1 这里&#34;背景&#34;不同于在shell中运行的后台进程的通常的* nix概念;例如,没有工作控制。 WRT subprocess,简单地创建一个新的子进程并加载所请求的可执行文件。如果shell=False按照默认Popen()选项,则不涉及shell。