将freeze_support()放在Python脚本中的位置?
作者:互联网
我很困惑使用freeze_support()进行多处理,没有它就得到一个运行时错误.我只运行脚本,而不是定义函数或模块.我还能用吗?或者我导入的软件包应该使用它吗?
Here是文档.
请注意,具体问题是关于scikit-learn调用GridSearchCV,它试图并行生成进程.我不确定我的脚本是否需要为此冻结,或者是一些被调用的代码(来自Anaconda发行版).如果详细信息与此问题相关,请转到更具体的question.
解决方法:
在Windows上,如果__name__ ==“__ main__”,则所有使用多处理的代码都必须受到保护:
因此,为了安全起见,我会将当前所有代码放在main()函数的脚本顶层,然后在顶层执行此操作:
if __name__ == "__main__":
main()
有关为何需要这样做的说明,请参见“主模块的安全导入”子部分here.您可能根本不需要调用freeze_support,尽管它不会包含任何内容.
请注意,最佳做法是将if __name__ ==“__ main__”保护用于脚本,这样如果您发现需要在将来的某个时刻将脚本导入另一个脚本,则不会意外执行代码.
标签:python,scikit-learn,anaconda,runtime-error,multiprocessing 来源: https://codeday.me/bug/20190923/1813413.html