好了,所以這可能是一個有點非正統或者我只是愚蠢或兩者:)開始蟒蛇瓶在一個線程/進程和另一個守護旁邊
我想一個很簡單的設置,其中我在一個Process
實例中啓動一臺瓶服務器,並在另一個實例中啓動一個小型的TFTP服務器。
#!/usr/bin/env python
import bottle
import sys
import tftpy
from multiprocessing import Process
def main():
try:
t = Process(target=bottle.run(host='0.0.0.0', port=8080))
t.daemon = True
t.start()
t.join()
h = Process(target=tftpy.TftpServer('/srv/tftp').listen('0.0.0.0', 69))
h.start()
h.join()
except KeyboardInterrupt:
sys.stdout.write("Aborted by user.\n")
sys.exit(1)
if __name__ == "__main__":
main()
除非我完全瘋狂,否則我會期待他們同時啓動。事實上,發生的事情是瓶子開始並鎖定整個事情。如果我退出瓶子,TFTP守護進程將啓動。
我也嘗試了類似的方法與threading
模塊,大約有相同的結果。
我在做什麼錯?
調用'在主線程run'是問題。謝謝你,你睜開了眼睛,看到我剛剛俯視的一些非常明顯的東西! :) – favoretti
附註:both和tftp都是IO綁定的,而不是CPU綁定的。線程應該足夠了,不需要產生額外的進程。 – defnull
@defnull:如果沒有他們的合作,線程很難被殺死,他們不會正確釋放資源。 – jfs