快速实现
1. 同一个函数不同的输入数据
from multiprocessing import Pool import os, time, random def task1(name): print('Run task %s (%s)...' % (name, os.getpid())) start = time.time() time.sleep(random.random() * 3) end = time.time() print('Task %s runs %0.2f seconds.' % (name, (end - start))) if __name__=='__main__': print('Parent process %s.' % os.getpid()) p = Pool(4) for i in range(5): p.apply_async(task1, args=(i,)) print('Waiting for all subprocesses done...') p.close() p.join() print('All subprocesses done.')
或者采用pool的map函数,但是注意这个返回的结果顺序和输入的i_list并不一致:
#coding: utf-8 import multiprocessing def m1(x): return x * x if __name__ == '__main__': pool = multiprocessing.Pool(multiprocessing.cpu_count()) i_list = range(8) results = pool.map(m1, i_list)
print(results)