web-dev-qa-db-ja.com

multiprocessing.freeze_support()

マルチプロセッシングモジュールがWindows実行可能ファイルを生成するために「凍結」されているときに機能するために、特定の function を呼び出す必要があるのはなぜですか?

27
Voo

その理由は、Windowsにfork()がないことです(これは not が完全にtrueである)。このため、Windowsでは、コードでnewプロセスを作成することにより、フォークがシミュレートされます。 Linuxでは、子プロセスで実行されています。コードは技術的に無関係なプロセスで実行されるため、実行する前にそこに配信する必要があります。配信方法は、最初にピクルスにしてから、パイプを介して元のプロセスから新しいプロセスに送信されます。さらに、この新しいプロセスには、_--multiprocessing-fork_コマンドライン引数を渡すことにより、パイプで渡されたコードを実行する必要があることが通知されます。 freeze_support()関数の implementation を見てみると、そのタスクは、実行されているプロセスがパイプによって渡されたコードを実行するかどうかを確認することです。

25
Piotr Dobrogost