我尝试使用Google Cloud Datalab扩展Pandas中的数据转换。
在我的机器上,所有小的文件都可以正常工作(保留文件的前100000行),但是使用完整的8G输入csv文件会导致Memoryerror。
尽管我有一个Datalab VM可以帮助我。我首先尝试在Highmem上使用VM,最大内存为120G。在那里,我不断收到错误消息:内核似乎已经死亡。它将自动重启。我在这里找到了一些东西:https://serverfault.com/questions/900052/datalab-crashing-despite-high-memory-and-cpu但是我没有使用TensorFlow,所以并没有太大帮助。
因此,我尝试了另一种方法,即块处理并在更多内核上并行化。它在我的机器(4核,12 G ram)上运行良好,但是仍然需要数小时的计算。
所以我想使用具有32个内核的Datalab VM来加快速度,但是在5个小时之后,当在本地计算机上已经完成10个线程时,第一个线程仍然没有完成。
非常简单:
是否有可能使用Datalab作为扩展Pandas转换的方法?为什么在理论上比本地计算机好得多的VM上我得到最差的结果?
某些代码:
import pandas as pd
import numpy as np
from OOS_Case.create_features_v2 import process
from multiprocessing.dummy import Pool as ThreadPool
df_pb = pd.read_csv('---.csv')
list_df = []
for i in range(-) :
df = df_pb.loc[---]
list_df.append(df)
pool = ThreadPool(4)
pool.map(process, list_df)
我的流程函数中的所有操作都是纯Pandas和Numpy操作
感谢您可以给我的任何提示,替代方法或最佳实践建议!
似乎GCP Datalab不支持多线程: