Python真正的线程安全字典(“RuntimeError:Dictionary changed size during iteration”avoiding)

2024-05-23 19:33:24 发布

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

由于使用了^{}和{a2}包,我意外地得到了一个线程化应用程序:)

应用程序将sorta状态保存在JSON文件中,它可以更改,其他任何人都可以更改它。更改后的JSON由inotify观察线程重新加载到dict中。在

应用程序在相当简单的条件下运行十几个线程。在

好吧,我终于明白了

RuntimeError: dictionary changed size during iteration.

我意识到,每一次字典操作都需要一个锁。在这本字典里,我是说。在

我试着用完全不同的方法来解决这个问题(是的,主要是挖掘stackoverflow)。在

在不可重入锁的情况下,我遇到了死锁(这在我看来很明显现在)。在

最后我采用了这种方法:

^{pr2}$

问题看起来不见了。。。在

问题是:我做得对吗?(我希望,这不会违反“我们更喜欢可以回答的问题,而不仅仅是讨论的问题”的规则:无论如何,它都可以得到回答)。在


Tags: 文件方法json应用程序a2dictionary字典状态