/* 看板娘 */ /* 粒子吸附*/

进程与线程的相关操作

内容概要

  • 僵尸进程与孤儿进程
  • 守护进程
  • 互斥锁(重点)
  • 消息队列
  • 实现进程间的数据交互(ipc机制)
  • 生产者消费者模型
  • 线程理论

内容详情

 

一、进程补充

 

僵尸进程与孤儿进程

僵尸进程

主进程代码运行完成之后不会直接结束,而是要等待所有子进程运行完回收他们的资源之后才能结束。

孤儿进程

主进程已经死亡(非正常死亡),儿子进程还在运行中。

守护进程

守护进程: 守护着某个进程,一旦守护的进程结束,守护的进程也会随之结束

from multiprocessing import Process
import time
def test(name):
    print("总管:%s is running" % name)
    time.sleep(3)
    print('总管: %s is over' % name)

if __name__=='__main__':
    p = Process(target=test, args=('jason',))
    #把p进程设置为守护进程
    p.daemon = True  #设置为守护进程
    p.start()
    print("皇帝驾崩了")
    time.sleep(0.1)
    print('被守护的主进程')

##运行结果
  “‘D:\Python36\python.exe D:/Users/admin/PycharmProjects/pythonProject6/僵尸进程/守护进程.py
皇帝驾崩了
总管:jason is running
被守护的主进程”“

##守护进程is over 不会执行,因为主进程结束后,p 进程内也会结束
互斥锁

 

 

 

 拿抢票举例,数据库中车票还剩一张,有一个购买功能,先用文件操获取数据库中的数据,在进行减一运算再保存,如果是并发状态下执行该功能,可以有多个进程同时对数据修改成功,也就有多个人同时购买同一张票,并且购买成功了,造成数据错乱等安全性的问题。

 

问题:并发情况下操作同一份数据,极其容易造成数据错乱

解决措施:将并发变成串行,虽然降低了效率但是提升了数据的安全性

  • 锁就是可以实现将并发变成串行

 

posted @ 2022-01-14 22:31  红绿灯的黄呀  阅读(37)  评论(0)    收藏  举报