我有以下使用 Pandas 的 Python (2.7) 函数,我需要在 400 GB 上运行。 150 GB 上的测试运行需要 4 小时才能成功完成(机器内存为 128 GB、16 核、4TB 磁盘)。 有没有一种聪明的方法来利用我的 CPU 上的所有内核来实现此目的 并并行执行此操作以减少处理时间:
def create_data(headers, filters, filesFolder, remove_chars, outputFolder):
for ds in headers:
for data_file in glob.glob(filesFolder + '*' + ds + '*.csv'):
x=0
for data in pd.read_csv(data_file, sep = '€', names = headers[ds], engine = 'python', chunksize = 10000000):
logger.info('Pandas Read %s' %(str(x) + '_' + os.path.basename(data_file)) )
for fil in filters[ds]:
try:
data[fil] = data[fil].astype('O')
data = data[data[fil] == filters[ds][fil]]
logger.info('Filtered data for %s succesfully. Filters are %s' %(str(x) + '_' + os.path.basename(data_file) , filters[ds]))
except:
logger.info('Could not apply filter %s for %s' %(filters[ds][fil], str(x) + '_' + os.path.basename(data_file) ))
pass
for char in remove_chars:
try:
data = data.replace({char: ''}, regex=True)
logger.info('Removed char %s from %s succesfully' %(char, str(x) + '_' + os.path.basename(data_file) ))
except:
logger.info('Could not remove char %s from %s' %(char, str(x) + '_' + os.path.basename(data_file) ))
pass
try:
data.to_csv(outputFolder + ds + '/' + str(x) + '_' + os.path.basename(data_file).split('.')[0].strip() + '.csv', enconding = 'utf-8')
logger.info('Saved csv %s succesfully' %(str(x) + '_' + os.path.basename(data_file)))
x+=1
except:
logger.info('Failed to Save %s' %(str(x) + '_' + os.path.basename(data_file)))
最佳答案
关于python - 为 Pandas 使用多个核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35862144/