私は初心者向けのライブラリをいじっており、Python でマルチプロセッシング モジュールを使用しています。この問題に遭遇しました: Windows で無限ループを引き起こすことなくマルチプロセッシングを使用するモジュールをインポートして使用する
例として、モジュールがあるとしますmylibrary.py
:
# mylibrary.py
from multiprocessing import Process
class MyProcess(Process):
def run(self):
print "Hello from the new process"
def foo():
p = MyProcess()
p.start()
そして、このライブラリを呼び出すメイン プログラム:
# main.py
import mylibrary
mylibrary.foo()
Windows で実行するmain.py
と、main.py を新しいプロセスにインポートしようとします。つまり、コードが再度実行され、プロセス生成の無限ループが発生します。次のように修正できます。
import mylibrary
if __name__ == "__main__":
mylibrary.foo()
しかし、これは初心者にとってかなり紛らわしいですし、その必要はないようです。で新しいプロセスが作成されているmylibrary
のに、なぜ新しいプロセスがインポートされないのmylibrary
ですか? 変更せずにこの問題を回避する方法はありmain.py
ますか?
ちなみに、私はPython 2.7を使用しています。