无论是使用多线程或者多进程都会涉及资源的争夺,比如在多个任务同时读写一个文件,任务就是不断的争夺文件的读写控制权。其中一个任务读写,其他任务就不能执行相同的操作。所以我们使用锁的概念,举个通俗易懂的例子吧!我们的任务就是在一间房子里生产饼干,A任务抢先拿了锁,那么A把门锁住了,其他的都进不来,大约过了一个小时,A任务执行完毕了要去干别的事情,这个时候它不需要再这个房间继续呆着了,A释放了锁,此时门被打开了,其他任务过来纷纷抢夺这个锁,拿到锁的任务继续锁着门在里面干活,哈哈,大概的意思就是这样,现在我们通过实际的代码来看看多进程是如何通过锁来控制资源的争夺的。

import multiprocessing

import sys

def worker_with(lock, f):

with lock:#使用with控制上下文,在内部代码执行完自动释放锁

fs = open(f, 'a+')

n = 10

while n > 1:

fs.write("Lockd acquired via with\n")

n -= 1

fs.close()

def worker_no_with(lock, f):

lock.acquire()#显示强调获取锁

try:

fs = open(f, 'a+')

n = 10

while n > 1:

fs.write("Lock acquired directly\n")

n -= 1

fs.close()

finally:

lock.release()#显示释放锁,释放资源的控制

if __name__ == "__main__":

lock = multiprocessing.Lock()

f = "file.txt"

w = multiprocessing.Process(target = worker_with, args=(lock, f))

nw = multiprocessing.Process(target = worker_no_with, args=(lock, f))

w.start()

nw.start()

print "end"

python multiprocessing lock_python多进程Lock锁相关推荐

  1. [转]浅谈 python multiprocessing(多进程)下如何共享变量

    2019独角兽企业重金招聘Python工程师标准>>> 1.问题: 群中有同学贴了如下一段代码,问为何 list 最后打印的是空值? from multiprocessing imp ...

  2. Intel Realsense D435 python multiprocessing 摄像头多进程流传输

    参考文章1:python 测试multiprocessing多进程 参考文章2:Intel Realsense D435 多摄像头目标识别架构

  3. python multiprocessing 得到多进程返回的结果

    主要使用一个列表把pool的对象添加进来,之后调用.get()即可 示例代码 import multiprocessingdef add(a: int, b: int):return a + bif ...

  4. python 并发编程 多进程 目录

    python multiprocessing模块 介绍 python 开启进程两种方法 python 并发编程 查看进程的id pid与父进程id ppid python 并发编程 多进程 Proce ...

  5. Python 学习笔记 多进程 multiprocessing

    Python 解释器有一个全局解释器锁(PIL),导致每个 Python 进程中最多同时运行一个线程,因此 Python 多线程程序并不能改善程序性能,不能发挥多核系统的优势,可以通过这篇文章了解. ...

  6. python 多进程中锁的使用方法

    一.不加锁 from multiprocessing import Process,Lock import timedef get():for i in range(3):time.sleep(1)p ...

  7. python lock_python多线程Lock和RLock的区别

    python多线程Lock和RLock的区别 1. 两种锁的不同 1.1 定义 为了确保对共享资源的访问,python提供了两种锁,一个是上一篇提到的Lock,还有一个就是RLock,他们的区别在于: ...

  8. Python使用multiprocessing实现多进程

    Python使用multiprocessing实现多进程 进程是操作系统进行资源分配和调度的一个基本单位. 一.进程及多任务介绍 程序:程序是一个静态的概念.在一台电脑上,我们安装了很多程序,这些程序 ...

  9. python multiprocessing.Lock 应用

    1.锁 1)未上锁,异步执行 import os import time import random from multiprocessing import Processdef work(n):pr ...

最新文章

  1. bootstrap-less源码分析:行和列
  2. JAVA 的 Date、Calendar的常用用法
  3. 英伟达驱动更新记录_N卡驱动更新软件(NVIDIA GeForce Experience) v3.16.0.122 官方版
  4. 2022年全球及中国商用多旋翼无人机行业十四五战略目标与发展方向分析报告
  5. CentOS6.5 gcc升级到4.8.2
  6. h5页面禁止复制_网页禁止鼠标右键禁止全选复制粘贴的方法
  7. android导入项目出现style错误,menu错误
  8. php 遮罩层,Jquery实现遮罩层的方法
  9. Vijos P1335 数独验证【谜题】
  10. android - Unable to add window -- token null is not for an application的解决方案
  11. 手动安装MySQL8.0
  12. 修改app的名字和图标
  13. 古建筑数字化影像采集技术分析
  14. 【机器学习】分类决策树基本介绍+代码实现
  15. 东南亚电商lazadashopee平台怎么开店,需要什么条件?
  16. LinearLayout和RelativeLayout布局中使用android:orientation
  17. 好用的组件Vue Tags Input 输入框标签
  18. 项目整合微信扫码登录功能
  19. Linux中的setenv与export
  20. Docker笔记:收集Docker常用的一些命令

热门文章

  1. 面试前必看:Redis 和 Memcached 的区别
  2. Flask实战2问答平台-问答详情完成
  3. tensor torch 构造_详解Pytorch中的网络构造
  4. psp能装安卓软件吗_客户crm 软件能定制吗
  5. nginx配置多个php端口号,nginx如何设置多端口
  6. android 中system 如何打包编译生成的
  7. 【python】Python中给List添加元素的4种方法分享
  8. 项目:部署LNMP动态网站
  9. 版本控制集中式与分布式的区别
  10. 一位读者刚刚收割阿里、腾讯等大厂Offer,他说这些话一定要和你们说一下