Contents

Python-标准库-Multiprocessing

Contents

python官网标准库参考

python官网标准库详细文档索引

python官网语言参考文档

multiprocessing文档

multiprocessing包主要复制threading模块的 API

Pool

进程池,使用map方法来实现调用

常用函数

  • Pool(n):创建n个进程的进程池

常用方法

  • map(f,[args]):args里面的arg,运行f(arg),并将最后的结果以列表形式返回
1
2
3
4
5
6
7
8
from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    with Pool(5) as p:
        print(p.map(f, [1, 2, 3]))

Process

变量

  • name:进程的名称
  • pid:进程id

常用函数

  • Process(target,args):构造函数,target为选择执行的函数,args为选择的参数

常用方法

  • start():启动进程
  • join():join子进程到调用的进程
  • run():子进程流程,可以对此进行覆盖
  • kill():使用SIGKILL信号杀死进程
  • close():关闭Process对象,释放与其关联的所有资源
1
2
3
4
5
6
7
8
9
from multiprocessing import Process

def f(name):
    print('hello', name)

if __name__ == '__main__':
    p = Process(target=f, args=('bob',))
    p.start()
    p.join()

Queue

进程间通信,读写线程和进程安全,类似go的channel,但是这里面什么都能塞

常用函数

  • Queue():构造函数

常用方法

  • put(a):把a塞入队列
  • get():获取队列的一个元素
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from multiprocessing import Process, Queue

def f(q):
    q.put([42, None, 'hello'])

if __name__ == '__main__':
    q = Queue()
    p = Process(target=f, args=(q,))
    p.start()
    print(q.get())    # prints "[42, None, 'hello']"
    p.join()

Lock

用于进程间同步

常用函数

  • Lock:构造函数

常用方法

  • acquire():上锁
  • release():取消上锁
 |