Python多任务处理:多进程篇
from concurrent.futures import ProcessPoolExecutor
from time import sleep, time
import os
print("CPU核数为%s个!" % os.cpu_count())
CPU核数为8个!
# Worker数量
N = 8
# 建立进程池
pool = ProcessPoolExecutor(max_workers=N)
def cpu_bound_func(x):
tot = 0
a = 1
while a <= x:
tot += x
a += 1
print("Finish sum from 1 to %d!" % x)
return tot
def process_array(arr):
for x in arr:
cpu_bound_func(x)
def fast_process_array(arr):
for x in pool.map(cpu_bound_func, arr):
pass
串行版本的运行时间5.7秒 多进程版本的运行时间1.6秒
def time_it(fn, *args):
start = time()
fn(*args)
print("%s版本的运行时间为 %.5f 秒!" % (fn.__name__, time() - start))
time_it(process_array, [10**7 for _ in range(8)])
Finish sum from 1 to 10000000!
Finish sum from 1 to 10000000!
Finish sum from 1 to 10000000!
Finish sum from 1 to 10000000!
Finish sum from 1 to 10000000!
Finish sum from 1 to 10000000!
Finish sum from 1 to 10000000!
Finish sum from 1 to 10000000!
process_array版本的运行时间为 5.74394 秒!
time_it(fast_process_array, [10**7 for _ in range(8)])
fast_process_array版本的运行时间为 1.62266 秒!
作者:李小文,先后从事过数据分析、数据挖掘工作,主要开发语言是Python,现任一家小型互联网公司的算法工程师。
Github: https://github.com/tushushu
更多阅读
特别推荐
点击下方阅读原文加入社区会员
评论