python - 缓冲区错误 : could not get scalar buffer information

标签 python memory multiprocessing buffer python-multiprocessing

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/

相关文章:

Python多处理: Extracting results

Python找不到库但pycharm可以

python - 我可以将函数作为参数发送到具有多处理功能的所有进程吗?

python - 对相互之间的 2 列进行排序

php - 改进 PHP 导入脚本的内存使用

c++ - 分配和删除指针

c++ - 将共享指针还是原始指针传递给函数

python - 多处理进程中的共享状态

Python 多处理模块,Windows,通过创建新进程生成新的控制台窗口

Python pygame.mouse.get_pos() 坐标在 IDE 终端中打印,但当鼠标移动时游戏窗口中的对象不移动