我在多处理中使用pool.map来执行自定义函数,
def my_func(data): #This is just a dummy function.
data = data.assign(new_col = data.apply(lambda x: f(x), axis = 1))
return data
def main():
mypool=pool.Pool(processes=16,maxtasksperchild=100)
ret_list=mypool.map(my_func,(group for name, group in gpd))
mypool.close()
mypool.join()
result = pd.concat(ret_list, axis=0)
这里gpd是一个分组的数据框,所以我一次将一个数据帧传递给pool.map函数。我一直在这里得到记忆错误。
从这里我可以看到,VIRT增加到多倍并导致此错误。
两个问题,
答案 0 :(得分:0)
仅适用于将来寻找答案的人。我通过使用imap而不是map来解决这个问题。因为map会列出一个密集的迭代器列表。