threading.Event可以用来保护Python中的变量访问吗?

2024-10-03 13:18:27 发布

您现在位置:Python中文网/ 问答频道 /正文

在一些Python代码中,我有一个相对简单的场景,其中有两个线程,一个线程设置一个值,另一个线程正在等待设置。我的本能是使用threading.Condition来实现这一点,但我想知道是否可以简单地使用threading.Event

所以,我有这样的想法:

value = None
readyToRead = threading.Event()

def set():
    # executes in thread 1
    global value
    value = computeValue()
    readyToRead.set()

def get():
    # executes in thread 2
    readyToRead.wait()
    useValue(value)

我想我会感到不安,因为对value的访问实际上没有互斥保护,而且我认为在某些语言中,仅仅依靠代码中语句隐含的顺序可能不安全

这在Python中是对Event的有效使用吗


Tags: 代码innoneeventvaluedef场景condition
1条回答
网友
1楼 · 发布于 2024-10-03 13:18:27

是,这是事件的有效用例。。 值是线程保护的。 如果增加线程数,则必须在所有线程中等待。如果是这种情况,则可以使用信号量

相关问题 更多 >