2013-07-18 181 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