gpt4 book ai didi

Python简单进程锁代码实例

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python简单进程锁代码实例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

先说说线程 。

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

再说说进程 。

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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)

  。

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

最后此篇关于Python简单进程锁代码实例的文章就讲到这里了,如果你想了解更多关于Python简单进程锁代码实例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com