编程语言
首页 > 编程语言> > 将freeze_support()放在Python脚本中的位置?

将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