设置类变量不会更新原始类的实例

时间:2019-06-04 14:56:15

标签: python python-multiprocessing class-variables

我有一堂课

class MusicCache(BaseDatabaseClass):
    dont_skip_duplicates = False

使用实例方法

def is_skip_set(self):
    if MusicCache.dont_skip_duplicates is False:
        # skip duplicates
    else:
        # don't skip duplicates

该类有5个实例在运行。

然后我从导入了MusicCache的另一个类中设置类变量:

class MQTTHandler(object):
    def set_skip_duplicates(self):
        MusicCache.dont_skip_duplicates = True

is_skip_set()始终等于false,即使调用set_skip_duplicates()也是如此。

我尝试将dont_skip_duplicates设置为实例变量,并将MusicCache的所有实例传递给MQTTHandler,并使用self.cache_instance_x.dont_skip_duplicates = True设置每个实例的实例变量,但这都不起作用,因为我将实例传递给MQTTHandler,并使用self分配创建本地实例。

我在MusicCache类中使用过Java风格的二传手,并且将dont_skip_duplicates变量设为@property以实现相同的目的,但是似乎没有任何作用。

MusicCache类的所有实例中设置此变量的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

闲逛了一会之后,我们意识到主循环正在运行一个多处理队列,我认为这是在防止跨类/实例的变量更新。

在主State类中添加了一个类型为multiprocessing.Event的变量,无法正确设置和获取该变量的状态。