import multiprocessing as mp
def parallel_apply(data, fun, args):
pool = mp.Pool(mp.cpu_count() - 1)
result = [pool.apply(fun, (data.loc[x, :], *args)) for x in data.index]
result = [p.get() for p in result]
end_result = pd.concat(result)
return end_result
从这部分代码中,我收到以下错误:"缓冲区错误:无法获取标量缓冲区信息"。我尝试了几件事,但没有一件奏效。有什么建议吗?感谢您的帮助
如果您的代码更完整/可运行,它会更好地工作,但从外观上看,data
可能是pandas
数据帧?
无论如何,这可能是由最近发布的 numpy
1.15.0 引起的,该版本破坏了numpy.datetime64
标量的酸洗。
multiprocessing
使用pickle
在不同进程之间序列化数据。
有关更多详细信息,请参阅:
- https://github.com/numpy/numpy/issues/11656
- https://github.com/numpy/numpy/pull/11694
一个简单的解决方法是降级到 numpy 1.14.0(或等待 1.15.1,它应该可以解决问题(。