如何解决使用 pandas chuncksize 并行化数据帧操作
我想将此函数应用于我的数据集:
def extract_keyphrases(caption,n):
extractor = pke.unsupervised.TopicRank()
extractor.load_document(caption)
extractor.candidate_selection(pos=pos,stoplist=stoplist)
extractor.candidate_weighting(threshold=0.74,method='average')
keyphrases = extractor.get_n_best(n=n,stemming=False)
return(keyphrases)
df['keywords'] = df.apply(lambda row: (extract_keyphrases(row['text'],10)),axis=1)
但是如果我运行它,需要很多时间才能完成(将近 50 个小时)。
是否可以使用 chunksize 或其他方法来并行化数据帧操作以及如何进行?
感谢您的宝贵时间!
解决方法
使用 multiprocessing
模块。为了避免每行创建一个进程的开销,每个进程处理 20,000 行:
import multiprocessing
def extract_keyphrases(caption,n):
...
def extract_keyphrases_batch(captions):
for caption in captions:
extract_keyphrases(caption,10)
def get_chunks(df,size):
for i in range(0,len(df),size):
yield df.iloc[i:min(i+size,len(df))]
if __name__ == '__main__':
with multiprocessing.Pool(multiprocessing.cpu_count()) as pool:
data = pool.map(extract_keyphrases_batch,get_chunks(df,20000))
out = pd.concat(data)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。