我对freeze_support()
使用multiprocessing
感到困惑,没有它我会得到Runtime Error
。我只运行脚本,而不是定义函数或模块。我还能用吗?或者我导入的软件包应该使用它吗?
Here是文档。
请注意,具体问题是scikit-learn
调用GridSearchCV
,它会尝试并行生成进程。我不确定我的脚本是否需要为此冻结,或者是一些被调用的代码(来自Anaconda发行版)。如果详细信息与此问题相关,请转到更具体的question。
答案 0 :(得分:40)
在multiprocessing
的Windows 全部上 - 使用代码必须由if __name__ == "__main__":
为了安全起见,我会将您目前所有代码放在脚本顶层的main()
函数中,然后在顶层执行此操作:
if __name__ == "__main__":
main()
参见"安全导入主模块"第here小节,解释为什么这是必要的。你可能根本不需要打电话给freeze_support
,虽然它不会伤害任何东西而包含它。
请注意,无论如何最好使用if __name__ == "__main__"
守护脚本,以便在您发现需要import
脚本进入另一个代码时,代码不会意外执行脚本在未来的某个时刻。