2013-07-18 141 views
3

我有以下代码:线程/多处理在Python

import SimpleHTTPServer 
import SocketServer 

def http_server(): 
    PORT = 80 
    Handler = SimpleHTTPServer.SimpleHTTPRequestHandler 
    httpd = SocketServer.TCPServer(("", PORT), Handler) 
    httpd.serve_forever() 

这里的问题是,由于httpd.serve_forever(),它挂起程序的其余部分。我假设我可以使用线程来在自己的线程上运行它,所以程序的其余部分可以独立于服务器执行,但我不知道如何实现它。

+0

你的进口应该在模块级别,而不是函数的内部 –

+0

@RyanHaining是的,这是我复制/粘贴代码时没有捕获的东西。 – Novicode

回答

1

最简单的方法,直接从docs

from threading import Thread 

t = Thread(target=http_server) 
t.start() 

注意,这个线程将很难杀死原来的样子,KeyboardInterrupts不会传播到你所start()版随机线程。你可能想要设置daemon=True或者有一些更复杂的方法来关闭它。

+0

非常好!这正是我所期待的,非常感谢。 – Novicode