Python 实现进程锁
来源:互联网 发布:矩阵连乘a1 a2 编辑:程序博客网 时间:2024/06/07 00:02
先说说线程
在多线程中,为了保证共享资源的正确性,我们常常会用到线程同步技术.
将一些敏感操作变成原子操作,保证同一时刻多个线程中只有一个线程在执行这个原子操作。
我最常用的是互斥锁,也称独占锁。其次还有读写锁,信号量,条件变量等。
除此之外,我们在进程间通信时会用到信号,向某一个进程发送信号,该进程中设置信号处理函数,然后当该进程收到信号时,执行某些操作。
其实在线程中,也可以接受信号,利用这种机制,我们也可以用来实现线程同步。更多信息见 blog.csdn.net/aspnet_lyc/article/details/19904825
再说说进程
进程里我们通过一些进程间通信方式,可以实现进程间的同步。
最近我遇到的一个情况是,某采集系统进程池中很多进程会向同一个日志文件中打印日志,如果通过进程间通信实现,比较麻烦。
还有一种办法,如果采用共享内存的方式,不同的进程分别将日志消息通过共享内存放入一个线程安全的队列中,再建立一个进程负责专门打印日志,这样也可以保证不被大乱,
保证日志的正确性,但代码量也很多阿。
还有一种办法,在共享内存中设置一个互斥锁,所有进程共享。
如果能像线程一样,有一个简单的互斥锁,用的时候只要加锁,就能实现进程间的互斥就好了。之前对文件加锁,也有些印象,于是我用它实现了一个进程间的互斥锁
#coding=utf-8"""Process mutex lock.Actually it is implemented by file lock."""import fcntlclass 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)
加锁 ProcessLock.lock()
释放 ProcessLock.unlock()
非常简单使用,有兴趣的朋友可以试一试。
0 0
- Python 实现进程锁
- Python实现进程资源共享
- python实现多进程
- Python -- 多进程实现
- 使用 Python 实现多进程
- Python实现的守护进程
- 使用 Python 实现多进程
- 使用 Python 实现多进程
- Python 实现的守护进程
- Python实现Daemon(守护)进程
- python实现多进程_multiprocessing
- Python守护进程daemon实现
- 多进程的Python实现
- python的进程锁
- Linux守护进程设计规范及python实现
- Linux守护进程设计规范及python实现
- python利用subprocess实现多进程
- python中限制进程实例个数实现
- 过滤关联表属性
- 关于九宫格的适配布局
- Linux下Graphite的安装及部署
- 数组排序
- 序列化
- Python 实现进程锁
- Hibernate 缓存机制
- 同行代码审查之我见
- informatica 数据库驱动程序事件,加载库[pmora8.dll]时出错。
- Regular Expression Matching
- PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
- Windows Codepage: 936 (Simplified Chinese GBK)
- cookie作用
- 求职套题2---各大公司