python – Scikit-learn Multicore:“AttributeError:StdIn实例没有属性’close’”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Scikit-learn Multicore:“AttributeError:StdIn实例没有属性’close’”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1200字,纯文字阅读大概需要2分钟。
内容图文
![python – Scikit-learn Multicore:“AttributeError:StdIn实例没有属性’close’”](/upload/InfoBanner/zyjiaocheng/733/3e7f1df50c9949e9b5f8f39cdc77790b.jpg)
我正在使用PyCharm从Scikit-learn运行RandomForestRegressor.这在执行整个脚本时工作正常:
clf = ensemble.RandomForestClassifier(n_estimators=100, n_jobs = 4, verbose=1, oob_score=True)
clf = clf.fit(x_train, y_train)
当我尝试从控制台运行该行时,我反复出现此错误:
AttributeError: StdIn instance has no attribute 'close'
File "/usr/local/Cellar/python/2.7.6_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/process.py", line 249, in _bootstrap
sys.stdin.close()
如果我将n_jobs参数更改为n_jobs = 1我没有收到错误,但它无法利用多线程.
我假设这与PyCharm控制台重定向stdin的事实有关,但我不知道如何让它工作.任何想法都表示赞赏 – 谢谢!
解决方法:
派对迟到了一点,但我刚才遇到了同样的问题.
另一个答案中建议的解决方法是避免使用PyCharm的交互式解释器.当然,这很有效但不满足我,因为我非常喜欢使用交互式解释器.
我发现了一种解决问题的不同解决方法,并允许使用交互式解释器.在通过multiprocessing.Process()创建新进程之前,必须应用以下代码段:
if not hasattr(sys.stdin, 'close'):
def dummy_close():
pass
sys.stdin.close = dummy_close
现在,多处理可以在sys.stdin上调用close()就好了,一切都顺利进行.
请注意,在启动阶段连接虚拟close()是不够的.我发现在每次调用multiprocessing.Process()之前都必须这样做.不过,我没有尝试使用流程池.
内容总结
以上是互联网集市为您收集整理的python – Scikit-learn Multicore:“AttributeError:StdIn实例没有属性’close’”全部内容,希望文章能够帮你解决python – Scikit-learn Multicore:“AttributeError:StdIn实例没有属性’close’”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。