当前位置: 首页 > 面试题库 >

如何修复/调试scikit中引发的此多进程终止的工作程序错误学习

督德泽
2023-03-14
问题内容

我最近安装了一台新机器,以帮助减少拟合模型和数据整理的运行时间。

我做了一些初步的基准测试,一切都变得很顺畅,但是当我尝试使用scikit学习启用多进程工作者时遇到了麻烦。

我将错误简化为不与原始代码相关联,因为我启用了此功能,而在其他计算机和VM上都没有问题。

我还做了内存分配检查,以确保我的机器没有耗尽可用的RAM。我有16gb的RAM,所以应该没有问题,但是如果我错过了一些东西,我就保留了测试的输出。

考虑到附近的回溯错误,我可以告诉我的操作系统正在杀死它,但是对于我一生来说,我不知道为什么。据我所知,我的代码仅在使用单个CPU内核时才运行。

我正在运行Windows 10,AMD ryzen 7 2700x,16GB RAM

import sklearn
import numpy as np
import tracemalloc
import time


from sklearn.model_selection import cross_val_score
from numpy.random import randn
from sklearn.linear_model import Ridge


##################### memory allocation snapshot

tracemalloc.start()

start_time = time.time()
snapshot1 = tracemalloc.take_snapshot()

###################### model

X = randn(815000, 100)
y = randn(815000, 1)
mod = Ridge()
sc = cross_val_score(mod, X, y,verbose =10, n_jobs=3)

################### Second memory allocation snapshot

snapshot2 = tracemalloc.take_snapshot()
top_stats = snapshot2.compare_to(snapshot1, 'lineno')

print("[ Top 10 ]")
for stat in top_stats[:5]:
print(stat)

由此产生的预期结果非常明显,只是拟合模型返回的分数。

错误输出

[Parallel(n_jobs=3)]: Using backend LokyBackend with 3 concurrent workers.
[Parallel(n_jobs=3)]: Done   3 out of   3 | elapsed:    0.2s remaining:    0.0s
---------------------------------------------------------------------------
TerminatedWorkerError                     Traceback (most recent call last)
<ipython-input-18-b2bdfd425f82> in <module>
     16 y = randn(815000, 1)
     17 mod = Ridge()
---> 18 sc = cross_val_score(mod, X, y,verbose =10, n_jobs=3)

..........

TerminatedWorkerError: A worker process managed by the executor was unexpectedly terminated. 
This could be caused by a segmentation fault while calling the function or by an excessive memory usage causing the Operating System to kill the worker.

记忆输出

[ Top 5 ]
<ipython-input-18-b2bdfd425f82>:15: size=622 MiB (+622 MiB), count=3 (+3), average=207 MiB
<ipython-input-18-b2bdfd425f82>:16: size=6367 KiB (+6367 KiB), count=3 (+3), average=2122 KiB
~python37\lib\inspect.py:732: size=37.2 KiB (+26.2 KiB), count=596 (+419), average=64 B
~python37\lib\site-packages\sklearn\externals\joblib\numpy_pickle.py:292: size=7072 B (+3808 B), count=13 (+7), average=544 B
~python37\lib\pickle.py:549: size=5728 B (+3408 B), count=14 (+8), average=409 B

问题答案:

我发现我的scipy模块与Windows 10 C ++可再发行版本不兼容。

我所做的只是下载了最新的Visual Studio,并安装了“单个组件”部分中列出的C ++可再发行的更新。

安装后,我将重新启动计算机并运行。

import scipy
scipy.test()

一旦实际运行,我就尝试在上面的代码块修复它。

我认为这归结为使用全新版本的python和scipy安装Windows 10的旧版本

解决和调试花费了很长时间。希望它会有所帮助。



 类似资料:
  • 无法使字段private final java.lang.String java.io.file.path可访问:module java.base不会“打开java.io”到未命名的module@6109445c 尝试: 使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。使用--scan运行以获得完整的见解。 null 有人能帮我吗!!

  • 我正在编程一个需要Hibernate技术的项目。我得到了堆栈痕迹,但我不知道如何修复它。有什么需要帮忙的吗? 这是我的堆栈跟踪,我得到了这两个错误: SLF4J:slf4j-api 1.6.x(或更高版本)与此绑定不兼容。SLF4J:您的绑定是1.5.5或更早版本。SLF4J:将绑定升级到1.6.x版本。或2.0.x 导入org.hibernate.hibernateException;导入org

  • 问题内容: 如何使多线程python程序响应Ctrl + C键事件? 编辑: 代码是这样的: 我试图在所有线程上删除join(),但仍然无法正常工作。是否因为每个线程的run()过程中的锁段? 编辑: 上面的代码应该可以工作,但是当当前变量在5,000-6,000范围内并遍历以下错误时,它总是会中断 问题答案: 在启动主线程之前,将除主线程之外的每个线程都设为守护进程(在2.6或更高版本中,在2.

  • 我使用的是p=运行时。getRuntime()。exec(“myScript.sh”);作为按钮a的addActionListener(new ActionListener())的actionPerformed(ActionEvent evt)的一部分。 我想有一个方法来终止进程。我试图创建另一个按钮(按钮B)来调用p.destroy()。但是,看起来在单击按钮A后,它启动了进程,并且只有在进程完

  • 我用JavaScript开发了一个程序,当每次按下按钮时,图像应该在每次按下时交替——如果它当前是“盒子打开”图像,它应该切换到“盒子关闭”图像。同样,如果它目前处于关闭状态,它应该切换到“打开的盒子”。然而,我面临着一个“非法调用”错误,这如何解决?

  • 我如何修复这个程序我使用Java Spring MVC?我想在数据库中输入包含日期的数据,但它显示错误。我该怎么修好它? 这是我在实体中的代码 字段“Tanggal”上对象“transaksipenjualan”中的字段错误:拒绝值[2019-07-15];代码[typemismatch.transaksipenjualan.tanggal,typemismatch.tanggal,typemis