使某些运算符在一段时间内无效? (Python)

Make certain operators have no effect over a duration of time? (Python)

我正在使用多线程。有一个线程定期添加到某个变量,比如每 5 秒一次。我想这样做,以便在调用函数 f() 时,对该变量的添加将不起作用。

我在任何地方都找不到如何执行此操作,而且我不确定从哪里开始。 是否有任何语法可以使某些操作在一定时间内不影响特定变量?

或者有人可以给我任何起点,我可以找出其余的吗?

谢谢。

我建议创建一个 addToVariable 或 setVariable 方法来处理对相关变量的实际添加。这样您就可以设置一个标志,如果设置了标志,则立即添加 addToVariable returns 而不是实际添加到相关变量中。

如果不是,您应该研究运算符重载。基本上你想要的是制作你自己的数字 - class 并编写一个新的 add 函数,其中包含某种标志,可以停止进一步添加以产生任何效果。

您可以使用锁保护增量并在 f() 调用期间获取锁:

import threading
import time

lock = threading.Lock()
# ...
def f():
    with lock:
        # the rest of the function

# incrementing thread
while True:
    time.sleep(5 - timer() % 5) # increment on 5 second boundaries
    with lock:
        x += 1

递增线程在f()执行时被阻塞。另见,How to run a function periodically in python