python 如何 并行

Python010

python 如何 并行,第1张

用multiprocessing类。

例如,进程process

multiprocessing.Process(target=None, args=()) target: 可以被run()调用的函数,简单来说就是进程中运行的函数 args: 是target的参数process的方法: start(): 开始启动进程,在创建process之后执行 join([timeout]):阻塞目前父进程,直到调用join方法的进程执行完或超时(timeout),才继续执行父进程 terminate():终止进程,不论进程有没有执行完,尽量少用。

python能够应用并行计算的模块有多个multiprocessing、pathos等。其中multiprocessing模块应用的较多,但对于数据挖掘场景来说,pathos模块更实用,尤其允许输入多个可变参数非常简单实用。

本文总结整理了常见的并行计算场景,编写parallel.py模块,主要利用pathos模块实现,可以实现单变量并行、多变量并行、并行嵌套等功能。通过tdqm模块增加了进度条,可以显示计算进度等信息,通过functools模块中的partial函数将静态参数冻结,以适应并行框架。

parallel.py

函数parallel的参数定义顺序需要注意: 必选参数--任意位置参数--默认参数--任意关键字参数

定义另一个parallel_main.py模块,用来展示各个场景下并行计算结果。

parallel_main.py

parallel函数使用注意点:

9000 行数据很小了, 慢的话 要是你每条数据处理逻辑都不复杂的话 那就是频繁的读写数据库 耗费了时间 。

1.不知道你是不是读一条 处理一条 入库一条

要是这样 你把逻辑改一下 :新建一个数组,读一条 处理一条 把处理好的数据放到数组中,再接着处理下有一条 ,以此类推,数据字段不多(不要搞得内存溢出)的话, 9000条都可以加载到数组里面了 ,然后利用python executemany(sql,values) 把这个数组一次性插入数据库

2.看看A表的数据能不能分组

例如 假设表A的id字段如下

id

1

2

3

4

5

.。

那么就可以利用id值的奇偶性 分成 2块数据 1,3,5 .---- 2,4

然后python起俩个进程 分别处理这俩块数据 ,根据Abiao实际情况 多分几个数据块 用python多个进程一起处理

祝你好运