私のプロジェクトでは、argprseを使用して引数を渡しています。スクリプトのどこかで、マルチプロセッシングを使って残りの計算を行っています。コマンドプロンプトから呼び出すと、スクリプトは正常に動作しています ex。 "python complete_script.py --arg1=xy --arg2=yz
"。Pythonマルチプロセッシングでargparseとpyinstallerでエラーが発生する
しかし、コマンドを使用してpyInstallerのを使用してexeファイルに変換した後、 "pyInstallerの--onefile complete_script.py" それは
エラー
" error: unrecognized arguments: --multiprocessing-fork 1448"
私はこの作品を作ることができるどのように任意の提案をスローします。または他の代替手段。私の目標は、Pythonがインストールされていない他のシステムでも呼び出せるexeアプリケーションを作成することです。ここで
は私のワークステーションの詳細は以下のとおりです。
コメントからコピーPlatform: Windows 10
Python : 2.7.13 <installed using Anaconda>
multiprocessing : 0.70a1
argparse: 1.1
:
def main():
main_parser = argparse.ArgumentParser()
< added up arguments here>
all_inputs = main_parser.parse_args()
wrap_function(all_inputs)
def wrap_function(all_inputs):
<Some calculation here >
distribute_function(<input array for multiprocessing>)
def distribute_function(<input array>):
pool = Pool(process = cpu_count)
jobs = [pool.apply_async(target_functions, args = (i,) for i in input_array)]
pool.close()
のために働くかもしれないこの便利な情報: [ 'コード'] DEFメイン(): main_parser = argparse.ArgumentParser() <ここに引数を追加> all_inputs = main_parser。parse_args() wrap_function(all_inputs) デフwrap_function(all_inputs): <ここではいくつかの計算> distribute_function(<マルチプロセッシングのための入力配列>) デフdistribute_function(): プール=プール(プロセス= CPU_COUNT) jobs = [pool.apply_async(target_functions、args =(i、input_arrayのi))] pool.close['code'] –
「main」はいつ呼び出されますか?インポート時または 'is __name __... 'ブロックのみで – hpaulj
main()は__name__ == '__main__'ブロックによって呼び出されます –