文章目录
- 1. 先指定多进程或多线程
- 2. 指定并行/多线程需要执行的任务
- 3. 最后递交给cpu即可
- 完整案例
使用joblib
包,导入:from joblib import Parallel
1. 先指定多进程或多线程
multi_work = Parallel(n_jobs=2, backend='multiprocessing')
其中:
- backend="threading"时为线程
- 当n_jobs=-1时,使用所有的CPU执行并行计算;
- 当n_jobs=1时,就不会使用并行代码,即等同于顺序执行,可以在debug情况下使用;
2. 指定并行/多线程需要执行的任务
使用的格式是:
# 这是三个任务,格式是[ 函数名, [参数列表], {参数列表} ]
task1 = [add_func, [2, 3], {}] # 计算2+3
task2 = [add_func, [4], {'y': 5}] # 计算4+5
task3 = [add_func, [], {'x': 1, 'y': 100}] # 计算1+100
3. 最后递交给cpu即可
result = multi_work([task1, task2, task3])
print(result)
完整案例
from joblib import Parallel
import os
def add_func(x, y):
print("当前进程:", os.getpid(), " 父进程:", os.getppid()) # 打印当前的进程ID与父进程ID
return x + y
if __name__ == '__main__':
multi_work = Parallel(n_jobs=2, backend='multiprocessing') # 创建一个多线程/多进程的辅助类
# backend="threading"时为线程
# 当n_jobs=-1时,使用所有的CPU执行并行计算;
# 当n_jobs=1时,就不会使用并行代码,即等同于顺序执行,可以在debug情况下使用;
task1 = [add_func, [2, 3], {}] # 计算2+3
task2 = [add_func, [4], {'y': 5}] # 计算4+5
task3 = [add_func, [], {'x': 1, 'y': 100}] # 计算1+100
result = multi_work([task1, task2, task3])
print(result) # [5, 9, 101]