現象
報錯代碼
def handle(s, c, db): pid = os.fork() if pid == 0: s.close() do_child(c, db) sys.exit() else: c.close()
在電子詞典項目中嘗試使用多進程來完成並發的 socket 處理的時候報錯
分析
windows 平台下無法使用 os.fork ,
IDE 雖然不會報錯.但是程序執行起來之后確實無法使用
解決方法
並發的手段處理有很多方法,比如這里用了協程一樣完成了相關的操作
雖然本來想使用 multiprocessing 來創建多進程,但是因為需要把 多進程寫在 main 下有點沖突於是選擇了更簡單的協程
gevent.spawn(do_child, c, db)