2010-08-29 165 views
4

我的python脚本需要启动后台进程,然后继续处理完成,而不必等待返回。从python脚本内启动python脚本作为后台进程

后台脚本将会处理一段时间,并且不会生成任何屏幕输出。

没有所需的进程间数据。

我已经尝试过使用各种方法子进程,多处理,但我显然缺少的东西。

有没有人有一个简单的例子?

TIA

回答

3

这个怎么样:

import subprocess 
from multiprocessing import Process 

Process(target=subprocess.call, args=(('ls', '-l',),)).start() 

这是不是所有的优雅,但它满足您的所有需求。

1

有关于如何做到这一点的各种片/件中的Calling an external command in Python一个很好的书面记录(每@lecodesportif)。

一个快速的答案的要点是:

retcode = subprocess.call(["ls", "-l"]) 
+0

它没有“没有等待”的要求。 – 2010-08-29 17:39:50

+1

啊 - 我的不好,我错过了阅读。你很正确。斯特凡诺的回答应该做你想要的。 – heckj 2010-08-29 18:07:14

+0

怎么样?'retcode = subprocess.call([“ls -l&”],shell = True)''。这对我行得通。 – SunSparc 2013-05-21 21:33:45

2

简单:

subprocess.Popen(["background-process", "arguments"]) 

如果您想稍后检查后台进程是否完成了它的任务,保留到POPEN对象的引用和使用它的方法是poll()