如何在python中启动子进程而不是等待它返回

cli*_*hew 3 python django subprocess r

我正在django中构建一个与R编写的大型程序接口的站点,我想在运行R程序的站点上有一个按钮.我有这个工作,使用subprocess.call(),但是,正如预期的那样,服务器在subprocess.call()返回之前不会继续呈现视图.由于这个程序可能需要几个小时才能运行,这不是一个真正的选择.
有没有办法运行R程序并继续执行python代码?我四处搜寻,并调查subprocess.Popen(),但我无法让它工作.
这是我在视图中使用的通用代码:

if 'button' in request.POST:
    subprocess.call('R CMD BATCH /path/to/script.R', shell=True)
    return HttpResponseRedirect('')
Run Code Online (Sandbox Code Playgroud)

希望我只是忽略了一些简单的事情.
谢谢.

Igo*_*bin 6

subprocess.Popen(['R', 'CMD', 'BATCH', '/path/to/script.R'])
Run Code Online (Sandbox Code Playgroud)

该过程将异步启动.

例:

$ cat 1.py
import time
import subprocess

print time.time()
subprocess.Popen(['sleep', '1000'])
print time.time()

$ python 1.py
1340698384.08
1340698384.08
Run Code Online (Sandbox Code Playgroud)

您必须注意,即使主进程停止,子进程也会运行.