我有一个类,它包含一个布尔变量和一个等待布尔值改变以执行某些代码的函数。一些(相当愚蠢的)例子:
import time
class SomeClass():
def __init__(self):
self._var = False
def setVar(self, state):
self._var = state
def waitForVarToChange(self):
while not self._var:
continue
print 'Variable changed'
self._var = False
if __name__ == "__main__":
myclass = SomeClass()
while True:
myclass.waitForVarToChange()
time.sleep(0.5)
myclass.setVar(True)
在本例中,waitForVarToChange()
方法在等待变量更改时显然会卡在while循环中。从现在开始,我应该在这里使用线程和/或事件。然而,我不知道在这种情况下实现线程的最佳方式是什么。有人能帮忙吗?在
考虑使用
multiprocessing
和Queue
,就像@BlackJack建议的那样。它更容易使用,尤其是Pool
对象。在这是一个多线程解决方案。一个线程启动,等待一段时间,然后标记一个线程安全的
Event
对象。第二个线程正在等待Event
,事件设置后,它打印一条消息并退出。在来源
输出
^{pr2}$相关问题 更多 >
编程相关推荐