守护进程、互斥锁、列队的使用案例

守护进程

如果子进程开启了守护模式,那么主进程运行完后立即干死子进程

from multiprocessing import Process
import time

# 【守护进程,会在主进程执行完毕后,被干掉】
# 【守护进程内无法再开子进程否则报错】

def task(name):
    print('%s is runing' % name)
    time.sleep(2)

if __name__ == '__main__':
    p = Process(target=task, args=('进程1',))
    p.daemon = True  # 开启守护进程
    p.start()

    print('主进程')

互斥锁

  • 类似许可证

互斥锁 和 jion的区别:
互斥锁可以局部变成串行 , 但是jion是把 整个子进程变为串行

from multiprocessing import Process
from multiprocessing import Lock  # 锁的类  许可证
import time

def task(name, mutex):
    mutex.acquire()  # 加上锁(许可证)
    print('%s 1' % name)
    time.sleep(1)
    print('%s 2' % name)
    time.sleep(1)
    print('%s 3' % name)
    mutex.release()  # 解除锁(许可证)


if __name__ == '__main__':
    lock = Lock()  # 造一把锁(许可证)
    for i in range(3):
        p = Process(target=task,args =('进程 %s' % i, lock))  # 把锁传给子进程(许可证)
        p.start()

队列

在内存中执行列队,并且自动带锁

from multiprocessing import Queue

# 队列的数据是在内存中,所以不易存大文件数据
q = Queue()  # 队列最多只有3个
q.put('hello')  # 加入列队
q.put({'a': 1})
q.put([3, 3, 3])
print(q.full())  # 判断队列满了没

print(q.get())
print(q.get())
print(q.get())
print(q.empty())  # 清空队列
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值