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
从这部分代码我得到以下错误:“BufferError:无法获取标量缓冲区信息”。我尝试了几件事,但没有一个奏效。有什么建议吗?谢谢帮助
最佳答案
如果您的代码更完整/可运行,它会工作得更好,但从外观上看,data
可能是一个 pandas
DataFrame?
无论如何,这可能是由最近发布的 numpy
1.15.0 引起的,它破坏了 numpy.datetime64
标量的酸洗。
multiprocessing
使用 pickle
序列化不同进程之间的数据。
更多详细信息,请参阅:
一个简单的解决方法是降级到 numpy 1.14.0(或等待 1.15.1,它应该可以解决问题)。
关于python - 缓冲区错误 : could not get scalar buffer information,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51740108/