好的,所以我试图运行一个python脚本(test1.py)并在最后将一些内容打印到网页中。我还想在此脚本中开始一个子进程(test2.py)。但是,实际上,test2.py的执行时间比test1要长。我遇到的问题是test1.py一直被阻止,直到test2完成。我见过很多人发布了类似的问题,但我见过的解决方案都没有解决我的问题。
这是我的代码的大量简化版本,用于演示此问题。我在本地服务器上运行它,并在firefox中显示它。
test1.py:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import cgi
import cgitb; cgitb.enable()
import subprocess
form = cgi.FieldStorage()
print("Content-Type: text/html") # HTTP header to say HTML is following
print # blank line, end of headers
p = subprocess.Popen(['python','test2.py'])
print "script1 ended"
test2.py:
from time import sleep
print "script2 sleeping...."
sleep(60)
print "script2 ended"
基本上我想执行test1.py并让它说" script1结束"在firefox中,无需等待60秒即可让子进程退出。我不想在test2子进程中显示任何内容。
编辑:对于任何感兴趣的人..我通过使用os.startfile()解决了windows中的问题,因为它结果是subprocess.Popen([...],stderr = subprocess.STDOUT,stdout = subprocess.PIPE )适用于Linux。当我在其上执行wget时,脚本在后台运行而不会延迟父脚本中的任何内容。