gpt4 book ai didi

python - 如何检查python 3中的RLock是否被任何线程获取

转载 作者:太空宇宙 更新时间:2023-11-04 03:15:36 25 4
gpt4 key购买 nike

在 python 2 中,我会使用:

is_locked = rlock._RLock__count > 0

这是因为 RLock 没有提供常规 Lock 对象所具有的功能,即 locked() 方法。在 python 3 中,甚至私有(private)变量 _RLock__count 也不存在。

最佳答案

问题似乎是在迁移到新版本的 Python 时,__count 实例属性被重命名为 _count。为了提供一个简单的 API,我们设计了一个 CustomRLock 类,并在下面的示例中进行了演示。它应该允许您查明锁是否已被任何线程(包括当前线程)获取。

import random
import threading


def main():
lock = CustomRLock()
if random.randrange(2):
lock.acquire()
print('Lock was', end='')
if not lock.acquired:
print(' not', end='')
print(' acquired.')


class CustomRLock(threading._PyRLock):

@property
def acquired(self):
return bool(self._count)


if __name__ == '__main__':
main()

关于python - 如何检查python 3中的RLock是否被任何线程获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36405438/

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