此处尝试multiprocessing,joblib,numba对实行for并行的作用
假设需要实现一个双重循环(可设置有返回值或无返回值)
for i in range(100000):
t_list = 0
for j in range(10000):
t_list = i - j
1、不并行
为方便比较,定义了2个函数,采用了嵌套结构
- def ForLoop():
- for i in range(100000):
- t = ForLoopSimple(i)
-
-
- def ForLoopSimple(i):
- t_list = 0
- for j in range(10000):
- t_list = i - j
- return t_list
-
-
- # origin (53 sec)
- time_start = time.time()
- ForLoop()
- time_end = time.time()
- print("---------------------")
- print("origin time:", time_end-time_start)
---------------------
origin time: 56.11203336715698
2、multiprogressing
为multiprogressing单独定义一个脚本,采用5个线程,主要如下
- def main():
- time_start = time.time()
-
- pool = multiprocessing.Pool(processes=5)
- result = pool.map(ForLoopSimple, rang