我正在尝试使用多处理程序包在非常大的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)
答案 0 :(得分:1)
尝试达斯
CALG_RSA_KEYX 0xA400 // RSA key exchange
CALG_DH_EPHEM 0xAA02 // Diffie-Hellman key exchange.