python 进程池 freeze_support_将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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值