運行os.fork()報AttributeError: module 'os' has no attribute 'fork'


現象 

報錯代碼 

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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM