• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python简单进程锁代码实例

Python简单进程锁代码实例

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了python监控进程,python 结束进程,python 多进程,python 关闭进程,python 杀进程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

先说说线程

在多线程中,为了保证共享资源的正确性,我们常常会用到线程同步技术.
将一些敏感操作变成原子操作,保证同一时刻多个线程中只有一个线程在执行这个原子操作。
我最常用的是互斥锁,也称独占锁。其次还有读写锁,信号量,条件变量等。
除此之外,我们在进程间通信时会用到信号,向某一个进程发送信号,该进程中设置信号处理函数,然后当该进程收到信号时,执行某些操作。
其实在线程中,也可以接受信号,利用这种机制,我们也可以用来实现线程同步。更多信息见 http://www.jb51.net/article/64977.htm

再说说进程

进程里我们通过一些进程间通信方式,可以实现进程间的同步。
最近我遇到的一个情况是,某采集系统进程池中很多进程会向同一个日志文件中打印日志,如果通过进程间通信实现,比较麻烦。
还有一种办法,如果采用共享内存的方式,不同的进程分别将日志消息通过共享内存放入一个线程安全的队列中,再建立一个进程负责专门打印日志,这样也可以保证不被大乱,
保证日志的正确性,但代码量也很多阿。
还有一种办法,在共享内存中设置一个互斥锁,所有进程共享。
如果能像线程一样,有一个简单的互斥锁,用的时候只要加锁,就能实现进程间的互斥就好了。之前对文件加锁,也有些印象,于是我用它实现了一个进程间的互斥锁

#coding=utf-8 
 
""" 
Process mutex lock. 
Actually it is implemented by file lock. 
""" 
 
import fcntl 
 
class ProcessLock(object): 
 
    __lockfd = None 
 
    @staticmethod 
    def lock(): 
        ProcessLock.__lockfd = open(__file__, 'a+') 
        fcntl.flock(ProcessLock.__lockfd, fcntl.LOCK_EX) 
 
    @staticmethod 
    def unlock(): 
        fcntl.flock(ProcessLock.__lockfd, fcntl.LOCK_UN) 
</div>


加锁  ProcessLock.lock()
释放 ProcessLock.unlock()
非常简单使用,有兴趣的朋友可以试一试。

</div>

您可能想查找下面的文章:

  • Python守护进程和脚本单例运行详解
  • Python守护进程和脚本单例运行详解
  • 深入理解python多进程编程
  • Python多进程同步简单实现代码
  • Python多进程同步简单实现代码
  • python多进程共享变量
  • Python监控主机是否存活并以邮件报警
  • Python监控主机是否存活并以邮件报警
  • Python多进程机制实例详解
  • Python实现监控程序执行时间并将其写入日志的方法

相关文章

  • Python中type的构造函数参数含义说明
  • Python3.2模拟实现webqq登录
  • Python正则表达式匹配ip地址实例
  • Python爬取三国演义的实现方法
  • python时间整形转标准格式的示例分享
  • Linux中安装Python的交互式解释器IPython的教程
  • python实现的登陆Discuz!论坛通用代码分享
  • windows下安装Python和pip终极图文教程
  • 用ReactJS和Python的Flask框架编写留言板的代码示例
  • Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python获取元素在数组中索引号的方法
    • 在Heroku云平台上部署Python的Django框架的教程
    • Python类的动态修改的实例方法
    • Python中的闭包详细介绍和实例
    • 深入理解python多进程编程
    • Python使用代理抓取网站图片(多线程)
    • 实例Python处理XML文件的方法
    • Python使用PDFMiner解析PDF代码实例
    • 深入理解Python中变量赋值的问题
    • 跟老齐学Python之编写类之二方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有