大数据框架上的熊猫多处理

时间:2020-04-15 09:34:44

标签: python pandas multiprocessing

我正在尝试使用多处理程序包在非常大的Pandas数据帧上计算函数。但是我遇到了以下错误的问题:

OverflowError: cannot serialize a bytes objects larger than 4GiB

将解决方案应用于this question并使用协议4进行酸洗后,我遇到了以下错误,该错误也由解决方案本身引用:

error: 'i' format requires -2147483648 <= number <= 2147483647

然后对this question的答案建议将数据框用作全局变量。 但是理想情况下,我希望数据框仍然是函数的输入,而不必让多处理库在后台多次复制和腌制它。

还有其他方法可以设计代码以免遇到问题吗?

我可以通过以下示例来复制问题:

import multiprocessing as mp
import pandas as pd
import numpy as np
import time
import functools

print('Total memory usage for the dataframe: {} GB'.format(df.memory_usage().sum() / 1e9))

def slow_function(some_parameter, df):
  time.sleep(1)
  return some_parameter

parameters = list(range(100))

with mp.Pool(20) as pool:
  function = functools.partial(slow_function, df=df)

  results = pool.map(function, parameters)

1 个答案:

答案 0 :(得分:1)

尝试达斯

CALG_RSA_KEYX 0xA400   // RSA key exchange
CALG_DH_EPHEM 0xAA02   // Diffie-Hellman key exchange.

docs:https://docs.dask.org/en/latest/dataframe-api.html