[問題] 多執行緒的script能否打包成exe??

看板Python作者 (A動動)時間14年前 (2011/12/30 14:45), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串1/1
小弟我遇到一個很奇怪地問題 我將一個程式加上多執行緒的功能 (multiprocessing 內的pool ) 直接執行.py檔案可以正常執行也能跑出正常結果 用pyinstaller將其打包成exe後可以正常執行 但是大概在pool.get的地方就整個跳出回圈(我沒設定會跳出回圈) 然後無限的循環 部份程式碼如下 for x in xxx: result = pool.apply_async(...........) myThread.append(result) for poolget in myThread: print "test" realResult=poolget.get() if len(realResult)!=0: Result2.append(realResult) 在exe執行後 test只會出現一次 .py的時候則不會有問題 想請問一下是什麼情況會造成這樣的問題??? 抓BUG抓了很久只好上來求救了 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 192.83.177.63

12/31 03:02, , 1F
已解決
12/31 03:02, 1F

12/31 03:03, , 2F
if __name__ == '__main__': 後面加上
12/31 03:03, 2F

12/31 03:03, , 3F
multiprocessing.freeze_support() 即可
12/31 03:03, 3F

12/31 03:04, , 4F
pyinstaller 本身也有問題 改用cx_Freeze 就OK了
12/31 03:04, 4F
文章代碼(AID): #1E_LtkAf (Python)
文章代碼(AID): #1E_LtkAf (Python)