在Windows系统上,所有使用multiprocessing
的代码都必须被if __name__ == "__main__":
保护。
因此,为了安全起见,我建议将你脚本目前位于顶层的所有代码放入一个main()
函数中,然后只需在顶层执行以下操作:
if __name__ == "__main__":
main()
请参见“安全导入主模块”小节这里,以了解为什么这是必要的。尽管包含它不会有任何问题,但你可能根本不需要调用freeze_support
。if __name__ == "__main__"
保护脚本是一种最佳实践,这样如果将来需要在另一个脚本中import
您的脚本,代码不会意外执行。if __name__ == "__main__":
内使用多处理时出现了这个错误。虽然我总是在 if
子句中使用多处理函数,但我并不知道需要使用多处理。这是我第一次在 'if' 子句之外使用该代码,结果出现了错误:RuntimeError: Attempt to start a new process before the current process has finished its bootstrapping phase
。 - Gary