我正在处理一个大型数据集,在那里我需要读取excel文件,然后找到有效的数字,但是这项任务只需要花费大量的时间处理500k个数据。对于有效号码,我使用googlephonelib。处理可以以异步方式完成,因为它们是独立的。在
parts = dask.delayed(pd.read_excel)('500k.xlsx')
data = dd.from_delayed(parts)
data['Valid'] = data['Mobile'].apply(lambda x: phonenumbers.is_valid_number(phonenumbers.parse(x)),meta=('Valid','object'))
作为背景
^{pr2}$输出为真
我预计输出不到10秒,但需要40秒左右
你可能只需要^{} your dataframe 来允许并行运行计算
我首先生成一些数据:
请注意,这些大多是有效的英国数字。在
然后我运行与您的代码类似的代码:
^{pr2}$在我的笔记本电脑(4核,8线程,linux5.2.8)上完成这个过程需要大约20秒,这只是普通循环性能的两倍多一点。这表明dask有相当多的运行时开销,因为我预计它会比这快得多。如果一个cdm{1>调用需要更长的时间来删除一个cdm}
请注意,如果我重写它来执行
multiprocessing
中的天真操作,我会得到更好的结果:减少11秒甚至更少的运行时间
相关问题 更多 >
编程相关推荐