Pandas 是否可以将数据实验室与多处理结合使用作为扩展转换的一种方式?

Pandas 是否可以将数据实验室与多处理结合使用作为扩展转换的一种方式?,pandas,python-multiprocessing,google-cloud-datalab,Pandas,Python Multiprocessing,Google Cloud Datalab,我尝试使用谷歌云数据实验室来扩大熊猫中的数据转换 在我的机器上,小文件(保留文件的前100000行)一切正常,但使用完整的8G输入csv文件会导致内存错误 我认为Datalab虚拟机会对我有所帮助。我第一次尝试使用带有Highmem的VM,最高可达120G或内存。 在那里,我不断得到一个错误:内核似乎已经死了。它将自动重新启动。 我在这里发现了一些东西: 但是我没有使用TensorFlow,所以它没有多大帮助 所以我尝试了一种不同的方法,在更多的内核上进行块处理和并行化。它在我的机器上运行良好(

我尝试使用谷歌云数据实验室来扩大熊猫中的数据转换

在我的机器上,小文件(保留文件的前100000行)一切正常,但使用完整的8G输入csv文件会导致内存错误

我认为Datalab虚拟机会对我有所帮助。我第一次尝试使用带有Highmem的VM,最高可达120G或内存。 在那里,我不断得到一个错误:内核似乎已经死了。它将自动重新启动。 我在这里发现了一些东西: 但是我没有使用TensorFlow,所以它没有多大帮助

所以我尝试了一种不同的方法,在更多的内核上进行块处理和并行化。它在我的机器上运行良好(4核,12G内存),但仍然需要数小时的计算

所以我想使用一个有32个内核的Datalab VM来加快速度,但是5个小时后,第一个线程仍然没有完成,而在我的本地机器上已经完成了10个线程

所以非常简单:

是否可以使用Datalab作为扩展转换的方法? 为什么理论上比本地机器好得多的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数据实验室似乎不支持多线程:

每个内核都是单线程的。除非您同时运行多个笔记本,否则多个内核可能不会带来显著的好处


一年后,我学到了一些有用的最佳实践:

  • 使用Google AI平台,选择以所需数量的CPU构建VM
  • 用于多线程
  • 对于Pandas,可以将.apply()与