Pet*_*fer 14 python numpy multiprocessing scikit-learn
我想使用multiprocessing.Pool并行应用函数.问题是如果一个函数调用触发了分段错误,则Pool会永久挂起.有没有人知道我如何制作一个可以检测到这种情况发生的池并引发错误?
以下示例显示了如何重现它(需要scikit-learn> 0.14)
import numpy as np
from sklearn.ensemble import gradient_boosting
import time
from multiprocessing import Pool
class Bad(object):
tree_ = None
def fit_one(i):
if i == 3:
# this will segfault
bad = np.array([[Bad()] * 2], dtype=np.object)
gradient_boosting.predict_stages(bad,
np.random.rand(20, 2).astype(np.float32),
1.0, np.random.rand(20, 2))
else:
time.sleep(1)
return i
pool = Pool(2)
out = pool.imap_unordered(fit_one, range(10))
# we will never see 3
for o in out:
print o
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1922 次 |
| 最近记录: |