我正在创建一个程序来创建一个单独的python Web服务器,服务器是:
import os, sys
from http.server import HTTPServer, CGIHTTPRequestHandler
webdir = '.'
port = 8000
print('Server Now Running')
os.chdir(webdir)
srvraddr = (('' , port))
srvrobj = HTTPServer(srvraddr, CGIHTTPRequestHandler)
srvrobj.serve_forever()
然后原始程序从命令行运行该服务器:
def runServer(self):
os.system('Webserver.py')
所有这些都是通过Tkinter窗口中的按钮完成的。调用此函数时,Tkinter窗口会冻结,并且无法按下下一个按钮(可以通过服务器在Safari中提取本地html文件)。
我环顾四周,看起来我可能需要穿线或其他东西......
我对于如何解决这个问题一无所知。如果有必要,可以提供更多我的原始程序(它有点笨拙)。
我正在寻找一个简单的解决方案,或者可能是一个特定的参考,以帮助我朝着正确的方向前进。
非常新(3个月)到Python,所以请记住这一点。
答案 0 :(得分:2)
import subprocess
s = subprocess.Popen(['Webserver.py'])
或者可能需要python
来启动脚本
s = subprocess.Popen(['python', 'Webserver.py'])
或者你可以运行
s = subprocess.Popen(['python3', '-m', 'http.server', '--cgi', '8000'])
以后你可以停止进程
s.kill()
Popen
(不带参数shell=True
)期望参数为列表答案 1 :(得分:1)
由于被调用程序的退出代码是函数os.system的返回值,程序将被阻塞,直到被调用的程序退出。
请尝试使用非阻止subprocess.Popen。