技巧1: 两个列表的两层循环并行处理
使用场景:比如两层for循环处理数据,此时可以使用生成器返回pair对,之后进行多进程处理,示例代码如下:
import multiprocessing
xlist=[1,2,3]ylist=[4,5,6]def enum_tasks():
for x in xlist:
for y in ylist:
yield (x,y)def product(xy):
x,y = xy return x * yif __name__ == '__main__':
CHUNK_SIZE = multiprocessing.cpu_count()
pool = multiprocessing.Pool()
for result in pool.imap(product, enum_tasks(), CHUNK_SIZE):
print result
技巧2:pandas的group并行处理
使用场景:根绝某一列进行分组,之后对每个分组进行处理,返回结果比较灵活,可以在tmpFunc定制自己的功能,很强大
import pandas as pdfrom joblib import Parallel, delayedimport multiprocessingdef tmpFunc(df):
df['c'] = df.a + df.b return dfdef