zoukankan      html  css  js  c++  java
  • multiprocessing模块

    执行步骤;

      1. 需要将要做的事情封装成函数
      2. 使用multiprocessing提供的类Process创建进程对象
      3. 通过进程对象和Process初始化进程进行进程的设置,绑定函数
      4. 启动进程,会自动执行绑定的函数
      5. 完成进程的回收

    函数:

      Process()
        功能: 创建进程对象
        参数: target : 要绑定的函数
        name : 给进程起的名称 (默认Process-1)
        args: 元组 用来给target函数位置传参
        kwargs : 字典 用来给target函数键值传参

      p.start()
        功能 : 启动进程
        * 自动运行terget绑定函数。此时进程才真正的被创建

      p.join([timeout])
        功能: 阻塞等待子进程退出
        参数: 超时时间

    multiprocessing创建进程的特性:

      * 使用multiprocessing创建进程子进程同样复制父进程的全部内存空间,之后有自己独立的空间,执行上互不干扰
      * 子进程也是有自己特有的PID等资源
      * 如果不使用join回收可能会产生僵尸进程
      * 使用multiprocessing创建子进程,一般父进程功能就是创建子进程回收子进程,所有事件交给子进程完成

    代码示例from multiprocessing import Processfrom time import sleep

    import os
    
    def th1():
        sleep(3)
        print("chifan")
        print(os.getppid(),"-----",os.getpid())
    def th2():
        sleep(2)
        print("shuijiao")
        print(os.getppid(),"-----",os.getpid())
    def th3():
        sleep(4)
        print("dadoudou")
        print(os.getppid(),"-----",os.getpid())
    
    things= [th1,th2,th3]
    process = []
    for th in things:
        p = Process(target = th)
        process.append(p)
        p.start()
    #循环回收进程
    for i in process:
        i.join()
  • 相关阅读:
    求100之内能被3整除不能被5整除的所有整数,和个数
    三目运算符的优先级问题
    javac不是内部或外部命令
    GitHub : Hello World
    Java GUI :Hello World
    onClick="RETURN:login();"
    问题-CHM文件不显示
    jsp里导入java包的问题
    实现算法2.2的程序
    实现算法2.4的程序
  • 原文地址:https://www.cnblogs.com/zengsf/p/9631597.html
Copyright © 2011-2022 走看看