基本使用
在 multiprocessing
中,每一个进程都用一个 Process
类来表示。首先看下它的API
1 | Process([group [, target [, name [, args [, kwargs]]]]]) |
target
表示调用对象,你可以传入方法的名字args
表示被调用对象的位置参数元组,比如target是函数a,他有两个参数m,n,那么args就传入(m, n)即可kwargs
表示调用对象的字典name
是别名,相当于给这个进程取一个名字group
分组,实际上不使用
我们先用一个实例来感受一下:
1 | import multiprocessing |
最简单的创建Process的过程如上所示,target传入函数名,args是函数的参数,是元组的形式,如果只有一个参数,那就是长度为1的元组。
然后调用start()
方法即可启动多个进程了。
另外你还可以通过 cpu_count()
方法还有 active_children()
方法获取当前机器的 CPU 核心数量以及得到目前所有的运行的进程。
1 | import multiprocessing |
Lock
并行输出结果会导致错位,我们可以通过Lock进行加锁
1 | from multiprocessing import Process, Lock |