我正在编写一个django应用程序,我需要调用一个python脚本,在调用方法foo.py
时说bar
。脚本foo.py
可能需要花费大量时间才能执行,因为它会迭代数据库中的数百万行。这就是为什么我不想等待它的输出,我希望文件完全由OS执行。我试过了:
execfile
os.system
subprocess.Popen
subprocess.call
但是他们都在等待文件产生输出。我怎样才能做到这一点?是否存在我缺少的模块,或者我是否可以编写一个“观察者脚本”,如果调用了bar
方法,它将独立运行foo.py
文件而不让方法完成执行而不是等待。
答案 0 :(得分:1)
可能你做错了什么,因为纯subprocess.Popen不等待子进程的结束......
尝试使用以下示例:
bar.py:
import subprocess
subprocess.Popen(['python', 'foo.py'])
print '123'
foo.py:
import time
time.sleep(50)
运行bar.py:
我立即看到" 123"输出,我也看到" python"在进程列表中