私が発見したように、マルチプロセッシングに関しては、ウィンドウはちょっとしたブタであり、それについて質問があります。
pydocは、マルチプロセッシングを使用する場合は、Windowsアプリケーションのエントリポイントを保護する必要があると述べています。
これは、新しいプロセスを作成するコードのみを意味しますか?
例えば
スクリプト1
import multiprocessing
def somemethod():
while True:
print 'do stuff'
# this will need protecting
p = multiprocessing.Process(target=somemethod).start()
# this wont
if __name__ == '__main__':
p = multiprocessing.Process(target=somemethod).start()
このスクリプトでは、プロセスを生成する行があるため、これをメインの場合にラップする必要があります。 しかし、もしあなたが持っていたらどうでしょうか?
スクリプト2
file1.py
import file2
if __name__ == '__main__':
p = Aclass().start()
file2.py
import multiprocessing
ITEM = 0
def method1():
print 'method1'
method1()
class Aclass(multiprocessing.Process):
def __init__(self):
print 'Aclass'
super(Aclass, self).__init__()
def run(self):
print 'stuff'
この場合、何を保護する必要がありますか? ファイル2にif__main__があった場合、プロセスが作成されている場合、この中のコードは実行されますか?
注:コードがコンパイルされないことはわかっています。これは単なる例です。