import multiprocessing
import datetime
def calc(i):
sum = 0
for _ in range(100000000):
sum += 1
if __name__== '__main__':
start = datetime.datetime.now()
lst = []
for i in range(5):
p = multiprocessing.Process(target=calc,args=(i,),name='p-{}'.format(i))
p.start()
lst.append(p)
for p in lst:
p.join()
delta = (datetime.datetime.now() - start).total_seconds()
print(delta)
运行结果:(双核心四线程,所有cpu核心都被使用,线程实际只有1个真正在工作)
27.207827
改进:
import multiprocessing
import datetime
def calc(i):
sum = 0
for _ in range(100000000):
sum += 1
if __name__== '__main__':
start = datetime.datetime.now()
pool = multiprocessing.Pool(5)
for i in range(5):
pool.apply_async(calc,args=(i,))
pool.close()
pool.join()
delta = (datetime.datetime.now() - start).total_seconds()
print(delta)
运行结果:
24.813401