pyinstaller multiprocessing not working

Posted in :

在打包 python script 為 windows binary 時, 如果source code 有使用到 multiprocessing 會出錯, 造成錯誤的程式是這一行:

pid = reader.recv()

完整程式碼:

    # create pipe
    reader, writer = multiprocessing.Pipe(False)

    # do not keep reference
    multiprocessing.Process(
        target=_start_detached,
        args=(executable, *args),
        kwargs={"writer": writer},
        daemon=True,
    ).start()
    # receive pid from pipe
    pid = reader.recv()

解法, 在呼叫前執行這二行:

from multiprocessing import freeze_support
freeze_support()

這個解法, 只對輸出為資料夾型態的 exe 檔有用.

聽說只有 windows 版的 multiprocessing 才會有問題, 其他平台沒有.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *