zoukankan      html  css  js  c++  java
  • 多进程与多线程的应用

    07.07自我总结

    一.多进程的应用

    1.多进程模块

    multiprocessing

    其中常用到的几个功能

    Process用于定义进程

    #定义进程有两种方式
    from multiprocessing import Process
    #第一种方式定义个方法
    def func(aaa):
        pritn(123)
        
    if __name__ == '__main__':
    	process = Process(target=func,args=(123,))  #将target表现进程的任务名称 ,如果任务需要传参就加args   
    
    注意:传参必须是集合的形式即使参数只有一个
    
    #第二种定义个类
    class Proce(Process): #用类的方法继承Process
        
        def run(self):               #run方法为任务执行的内容
            print('1')
    if __name__ == '__main__':
    	process = Proce()       
        
    如果任务需要传参,
    class Proce(Process):  # 用类的方法继承Process
        def __init__(self,data):
            super().__init__()
            self.data = data
        def run(self):  
            print(self.data)
    if __name__ == '__main__':
        process = Proce(1111)
    

    Lock:用于定义一个互斥锁

    • 定义锁

    active_children:查看当前还在运行的自进程信息

    cpu_count:查看cpu进程

    2.进程的方法

    • is_alive():返回进程是否在运行。

    • join([timeout]):阻塞当前上下文环境的进程程,直到调用此方法的进程终止或到达指定的timeout(可选参数)。

    • start():进程准备就绪,等待CPU调度

    • run():strat()调用run方法,是主进程了运行了run而不是子进程

    • terminate():不管任务是否完成,立即停止工作进程

    3.进程的属性

    • daemon:守护进程

    • exitcode(进程在运行时为None、如果为–N,表示被信号N结束)

    • name:进程名字。

    • pid:进程号。

    4,进程的守护

    使用了daemon

    如果

    实例化程序A.daemon = True 说明该进程守护主进程,当主进程结束了该子进程默认会跟着结束

    如果不做处理deamon默认为False

    5.子进程的运行在linux与windows中区别

    在windows开启一个子进程他会把主程序自上而下重新运行一遍,所以我们在windows中必须把和子程序相关的丢入main里面中

    在linux中只是会记录主程序的自上而下运行后最后的运行状态,而不会重新运行一遍,所以在linux中也不需要丢入main

    综上所述还是将子进程丢入main里面运行更加合适

    二.多线程的应用

    1.多线程的模块

    threading

    其中常用到的几个功能

    Thread:创建线程,方法与进程相同

    Lock:互斥锁

    • lock = threading.Lock() 创建锁

    • lock.acquire()加锁

    • lock.release()解锁

    RLock: 也是种互斥锁Lock允许在同一线程中被多次acquire。而Lock却不允许这种情况

    active_count:存活的线程数量,返回的个数中包含主线程。

    enumerate:方法返回当前运行中的Thread对象列表

    2.线程的方法

    与进程相似

    • is_alive():返回进程是否在运行。

    • join([timeout]):阻塞当前上下文环境的线程,直到调用此方法的进程终止或到达指定的timeout(可选参数)。

    • start():进程准备就绪,等待CPU调度

    • run():strat()调用run方法,是主线程了运行了run而不是子进程

    • terminate():不管任务是否完成,立即停止工作线程

    3.线程的属性

    与进程相似

    • daemon:守护线程

    • is_alive:是否存活

    • name:进程名字。

    • idend:线程号。

    4.线程的守护

    与进程相似

    5.子线程的运行在linux与windows中区别

    没有区别,都与进程在linux运行的方式一样

  • 相关阅读:
    C—动态内存分配之malloc与realloc的区别
    C++动态内存管理之深入探究new和delete
    Linux粘滞位的设置
    linux—find指令常见用法示例
    Linux系统date命令的参数及获取时间戳的方法
    Linux系统文件的三个重要时间详解
    《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---27
    《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---26
    《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---25
    《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---24
  • 原文地址:https://www.cnblogs.com/pythonywy/p/11146413.html
Copyright © 2011-2022 走看看