zoukankan      html  css  js  c++  java
  • 多任务编程 -- multiprocessing 模块(创建多进程、进程池使用、进程间通信)

    进程创建方法:

    1. 流程特点
      1. 将需要子进程执行的事件封装为函数;
      2. 通过模块的Process类,创建进程对象,关联函数;
      3. 可以通过进程对象,设置进程信息及属性;
      4. 通过进程对象,调用start启动进程;
      5. 通过进程对象,调用join回收进程。
    2. 基本接口使用
      1. Process():
        1. 功能:创建进程对象
        2. 参数:
          1. target:绑定要执行的目标函数;
          2. args:元祖,用于给target函数,位置传参;
          3. kwargs:字典,用于给target函数,键值传参。
      2. p.start()
        1. 功能:启动进程
        2. 注意:启动进程,此时target绑定的函数开始执行,该函数作为子进程执行内容,此时进程真正被创建。
      3. p.join([timeout])
        1. 功能:阻塞等待回收进程
        2. 参数:超时时间
    3. 注意
      1. 使用multiprocessing创建进程,同样是,子进程复制父进程内存空间代码段父子进程运行互不影响
      2. 子进程只运行target绑定的函数部分,其余内容,均是父进程执行内容;
      3. 父进程往往只用来创建子进程、回收子进程,具体事件有子进程完成;
      4. multiprocessing创建的子进程中,无法使用标准输入(即:input)。
    4. 进程对象属性
      1. p.name:进程名称;
      2. p.pid:对应子进程的PID号;
      3. p.is_alive():查看子进程是否在生命周期;
      4. p.daemon:设置父子进程的退出关系:
        1. True:子进程会随父进程的退出而结束;
        2. 要求:必须在start()前设置;
        3. 如果daemon被设置为True,通常就不会使用join()

    实例代码:

    Python3多进程 multiprocessing 模块实例详解_python_脚本之家

    进程池实现:

    1. 必要性
      1. 进程的创建和销毁过程,消耗的资源较多;
      2. 当任务量众多,每个任务在很短时间内完成时,需要频繁的创建和销毁进程。此时,对计算机压力较大。
      3. 进程池技术很好的解决了以上问题。
    2. 原理
      1. 图解
      2. 创建进程池对象,放入适当的进程
        1. from multiprocessing import Pool
          
          Pool(processes)
        2. 功能:创建进程池对象
        3. 参数:指定进程数量,默认根据系统自动判定(计算机的核数)
      3. 将事件加入进程池队列,执行
        1. from multiprocessing import Pool
          
          pool = Pool(3)
          
          pool.apply_async(func, args, kwds)
        2. 功能:使用进程池执行 func事件
        3. 参数:
          1. func:事件函数
          2. args:元祖,给func按位置传参
          3. kwds:字典,给func按键值传参
      4. 关闭进程池
        1. pool.close():
        2. 功能:关闭进程池
      5. 回收进程池中进程
        1. pool.join():
        2. 功能:回收进程池中进程。

    进程间通信:

  • 相关阅读:
    洛谷 AT2000 Leftmost Ball
    洛谷 P1326 足球
    洛谷 P4868 Preprefix sum
    洛谷 P2596 [ZJOI2006]书架
    HDU 3415 Max Sum of Max-K-sub-sequence
    洛谷 P3901 数列找不同
    洛谷 P3609 [USACO17JAN]Hoof, Paper, Scissor蹄子剪刀…
    洛谷 P5749 [IOI2019]排列鞋子
    验证码解决表单重复的原理
    session和浏览器之间的技术内幕
  • 原文地址:https://www.cnblogs.com/gengyufei/p/12906870.html
Copyright © 2011-2022 走看看