• CSDN21天学习挑战赛 - 第三篇打卡文章


    活动地址:CSDN21天学习挑战赛

    学习日记

    1,学习知识点

    一、什么是多进程?
    1.进程
    程序:例如xxx.py这是程序,是一个静态的
    进程:一个程序运行起来后,代码+用到的资源称之为进程,它是操作系统分配资源的基本单元。不仅可以通过线程完成多任务,进程也是可以的
    2.进程的状态
    工作中,任务数往往大于cpu的核数,即一定有一些任务正在执行,而另外一些任务在等待cpu进行执行,因此导致了有了不同的状态
    二、进程的创建-multiprocessing
    1.Process类
    multiprocessing模块通过创建一个Process对象然后调用它的start()方法来生成进程,Process与threading.Thread API相同。
    语法格式: multiprocessing.Process(group=None,target=None,name=None,args=(), kwargs={},*,daemon=None)
    参数说明:
    group︰指定进程组,大多数情况下用不到
    target:如果传递了函数的引用,可以任务这个子进程就执行这里的代码
    name:给进程设定一个名字,可以不设定
    args : 给target指定的函数传递的参数,以元组的方式传递
    kwargs :给target指定的函数传递命名参数
    在这里插入图片描述

    2,学习的收获

    进程之间可以使用Queue来进行同步,而为了防止多进程之间出现访问错误,通常还会使用锁Lock:
    锁是为了确保数据一致性。比如读写锁,每个进程给一个变量增加1,但是如果在一个进程读取但还没有写入的时候,另外的进程也同时读取了,并写入该值,则最后写入的值是错误的,这时候就需要加锁来保持数据一致性。
    通过使用Lock来控制一段代码在同一时间只能被一个进程执行。Lock对家的网个万法,acqulre()用米状取锁,release()用来释放锁。当一个进程调用acquire()时,如果锁的状态为unlocked,那么会立即修改为locked并返回,这时该进程即获得了锁。如果锁的状态为locked,那么调用acquire()的进程则阻塞。

  • 相关阅读:
    uboot 顶层Makefile-make xxx_deconfig过程说明三
    MySQL系列-高级-深入理解Mysql事务隔离级别与锁机制02
    【白帽子讲Web安全】第二章 浏览器安全
    【JAVA数据结构】JAVA数据结构必备知识:泛型与包装类
    Flowable 外置的 HTML 表单怎么玩?
    [CSAWQual 2016]i_got_id(Perl ARGV)
    spring boot 使用AOP实现是否已登录检测
    C# 并发编程
    基于RRT算法的最优动力学路径规划(Matlab代码实现)
    从模型容量的视角看监督学习
  • 原文地址:https://blog.csdn.net/weixin_44120025/article/details/126218980