仕事の出力を Manager リストに追加しようとするワーカーのプールをセットアップする単純な python マルチプロセッシング スクリプトがあります。このスクリプトには 3 つのコール スタックがあります。スクリプトをデバッグしようとすると (偶然にも Windows 7/64 ビット/VS 2010/PyTools で)、スクリプトはネストされたプロセス作成ループに突入し、無数のプロセスが生成されます。誰でも理由を特定できますか?私は非常に単純なものが欠けていると確信しています。問題のあるコードは次のとおりです: -
import multiprocessing
import logging
manager = multiprocessing.Manager()
results = manager.list()
def g1(x):
y = x*x
print "processing: y = %s" % y
results.append(y)
def f1():
logger = multiprocessing.log_to_stderr()
logger.setLevel(multiprocessing.SUBDEBUG)
pool = multiprocessing.Pool(processes=4)
for (i) in range(0,15):
pool.apply_async(g1, [i])
pool.close()
pool.join()
def main():
f1()
if __name__ == "__main__":
main()
PS: multiprocessing.freeze_support()
main に追加しようとしましたが、役に立ちませんでした。