我正在使用多线程。有一个线程定期添加到某个变量,比如说每5秒。我想这样做,以便在调用函数f()时,对该变量的添加将不起作用。
我无法在任何地方找到如何做到这一点,我不知道从哪里开始。 是否有任何语法使某些操作在特定持续时间内没有特定变量影响?
或者有人可以给我任何起点,我可以弄清楚剩下的吗?
感谢。
答案 0 :(得分:2)
我建议创建一个addToVariable或setVariable方法来处理有问题的变量的实际添加。这样你就可以设置一个标志,如果设置了标志,addToVariable会立即返回,而不是实际添加到有问题的变量中。
如果没有,您应该查看运算符重载。基本上你想要的是创建自己的数字类并编写一个新的添加函数,该函数包含某种标志,可以阻止进一步添加以产生任何效果。
答案 1 :(得分:1)
您可以使用锁定保护增量,并在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