gpt4 book ai didi

Python条件 "With"锁设计

转载 作者:IT老高 更新时间:2023-10-28 21:07:04 25 4
gpt4 key购买 nike

我正在尝试使用 with 语句进行一些共享锁定

def someMethod(self, hasLock = False):
with self.my_lock:
self.somethingElse(hasLock=True)


def somethingElse(self, hasLock = False):
#I want this to be conditional...
with self.my_lock:
print 'i hate hello worlds"

这有意义吗?如果我还没有锁,我基本上只想这样做。

除了能够做到这一点之外,这是一个糟糕的设计吗?我应该只是获取/释放自己吗?

最佳答案

只需使用 threading.RLock,它是可重入的,这意味着它可以被同一个线程多次获取。

http://docs.python.org/library/threading.html#rlock-objects

为了清楚起见,RLock 用在 with 语句中,就像在您的示例代码中一样:

lock = threading.RLock()

def func1():
with lock:
func2()

def func2():
with lock: # this does not block even though the lock is acquired already
print 'hello world'

至于这是否是糟糕的设计,我们需要更多的上下文。为什么这两个函数都需要获取锁? func2 什么时候被 func1 以外的东西调用?

关于Python条件 "With"锁设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5185568/

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