phi*_*ppe 10 python httpserver
我想SimpleHTTPServer在一个单独的线程中启动一个,同时time.sleep(100)在主要的一个中执行其他操作(此处).以下是我的代码的简化示例:
from SimpleHTTPServer import SimpleHTTPRequestHandler
from BaseHTTPServer import HTTPServer
server = HTTPServer(('', 8080), SimpleHTTPRequestHandler)
print 'OK UNTIL NOW'
thread = threading.Thread(target = server.serve_forever())
print 'STUCK HERE'
thread.setdaemon = True
try:
thread.start()
except KeyboardInterrupt:
server.shutdown()
sys.exit(0)
print 'OK'
time.sleep(120)
Run Code Online (Sandbox Code Playgroud)
但是,该线程仍然是"阻塞",即不作为守护进程启动,并且解释器无法到达print 'OK'.它既没有达到STUCK HERE.
我已经知道线程只会在调用时被初始化,threading.Thread(...)并且主线程仍然会更进一步,直到找到thread.start启动它的指令.
有没有更好的方法来完成这项任务?
dop*_*tar 10
改变这个:
thread = threading.Thread(target = server.serve_forever())
Run Code Online (Sandbox Code Playgroud)
为此:
thread = threading.Thread(target = server.serve_forever)
Run Code Online (Sandbox Code Playgroud)
并改变这个:
thread.setdaemon = True
Run Code Online (Sandbox Code Playgroud)
为此:
thread.daemon = True
Run Code Online (Sandbox Code Playgroud)