我在我的python程序中有一个列表在某些场合获取新项目(它是一个消息队列使用者)。然后,我有一个线程,每隔几分钟检查一次,看看列表中是否有任何内容,如果有,那么我想对每个项目执行一个操作,然后清空列表。python主线程和子线程之间的原子操作
现在我的问题:我应该使用锁定以确保子线程中的操作是原子操作,并确保主线程无法在列表中通过列表时更改列表?
或者我应该使用某种标志?
伪代码使我的问题更清晰。
的子线程:
def run(self):
while 1:
if get_main_thread_list() is not empty:
do_operations()
empty_the_list()
sleep(30)
主线程:
list = []
def on_event(item):
list.add(item)
def main():
start_thread()
start_listening_to_events()
我希望这是我的问题更清晰,资源或评论任何环节都显得欢迎! PS:我很清楚,如果你相信如此,那么请你花一些时间来解释我的推理有什么问题,如果你有时间的话,我可能不会很好地掌握线程编程。
撇开。如果你想要一个“队列”,但你不需要线程安全,你可能真的想要['collections.deque'](http://docs.python.org/library/collections.html#collections.deque)而不是'queue.Queue';主要区别在于后者用锁定来包装前者 – SingleNegationElimination 2012-08-07 12:03:35