• 并发并行编程


    概念

    进程

    进程就是正在进行的一个过程,或者一个任务,负责任务执行的就是cpu

    进程和程序的区别

    进程是一个正在运行的过程,是程序的运行过程,而程序只是一堆代码而已。

    同一个程序执行两次,也是两个进程

    并发与并行

    并发是两个任务可以在重叠的时间段内启动,运行和完成。并行是任务在同一时间运行,例如,在多核处理器上。
    并发是独立执行过程的组合,而并行是同时执行(可能相关的)计算。
    并发是一次处理很多事情,并行是同时做很多事情。
    应用程序可以是并发的,但不是并行的,这意味着它可以同时处理多个任务,但是没有两个任务在同一时刻执行。
    应用程序可以是并行的,但不是并发的,这意味着它同时处理多核CPU中的任务的多个子任务。
    一个应用程序可以即不是并行的,也不是并发的,这意味着它一次一个地处理所有任务。
    应用程序可以即是并行的也是并发的,这意味着它同时在多核CPU中同时处理多个任务。

    同步、异步和阻塞非阻塞

    同步就是在发出一个功能调用时,没有得到结果之前,这个调用就不会返回,按照这个定义,大多数函数都是同步调用,但一般来讲,说同步,异步就是指那些需要其他部件协作或者要一定时间完成的任务,

    异步和同步相对,功能调用发出时,调用者不能立即得到结果,功能完成后,才会通过状态,通知或回调来通知调用者,如果异步功能用状态来通知,那么调用者每隔一段时间来检查一次,效率很低,但是如果用通知方式,效率就很高,因为异步功能几乎不需要做额外的操作。

    操作

    multiprocessing模块介绍

    它用来开启子进程,在子进程中执行定制的任务,比如函数,这个模块和多线程模块threading的编程接口类似。
    支持子进程,通信和共享数据,执行不同形式的同步,提供了process,Queue,Pipe,Lock等组件。

    Process类的介绍

    创建进程的类:

    1. 需要使用关键字的方式来指定参数
    2. args指定的为传给target函数的位置参数是,一个元组形式,必须要有逗号

    参数介绍

    1. gronp参数未使用,值始终未None
    2. target表示调用对象,也是子进程要执行的任务
    3. args表示调用的位置参数元组,args=(1,2,)
    4. kwargs表示调用对象的字典,kwargs={'name':'jh','age':18}
    5. name为子进程的名称

    方法

    1. 对象.start():启动进程,调用该子进程中的对象.run()

    2. 对象.run() 进程启动时运行的方法,正是 它去调用target指定函数,我们自定义类的类中要实现这个方法

    from multiprocessing import Process
    import time
    
    def task():
        print('进程 start')
        time.sleep(2)
        print('进程 end')
    
    if __name__ == '__main__':
        p=Process(target=task)
        p.start()#告诉操作系统需要开子进程,操作系统开子进程需要时间
        time.sleep(5)
        print('主进程/父进程')
    
  • 相关阅读:
    对NETIF_F_GSO的一些理解
    关于ptype_all和pypte_base中的pt_prev的说明[转]
    linux网络收包过程
    linux的pci驱动模型
    linux内核的冷热页分配器
    linux的bootmem内存管理
    GitHub 下载代码命令并且导入到IDEA环境
    配置Log4j(非常具体)
    sudo:有效用户 ID 不是 0,sudo 属于 root 并设置了 setuid 位吗?
    RMP和YUM软件安装
  • 原文地址:https://www.cnblogs.com/jhpy/p/11508012.html
Copyright © 2020-2023  润新知