我有一个简单的 python 多处理脚本,它设置了一个试图将工作输出附加到管理器列表的工作人员池。该脚本有 3 个调用堆栈: - main 调用 f1,它产生多个调用另一个函数 g1 的工作进程。当尝试调试脚本时(顺便说一下在 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 无济于事。