在python中使用静态变量时遇到一些问题。我正在尝试提供一个进程数计数器(称为 Node 的类)。在初始化中,一切都很好,但是在静态变量 num_node 之后,开始有2个不同的值。在主节点上具有正确的值,即已创建的节点数,但是如果我将其打印在Node的实例上,则会将其重置为0
(英语不是我的母语;请原谅我的任何错误)
这是我的班级节点:
class Node(Process):
num_node = 0
@classmethod
def increase(cls):
Node.num_node += 1
@classmethod
def get_num_node(cls):
return Node.num_node
def __init__(self,queue):
super(Process,self).__init__()
self.queue = queue
Node.increase()
print("Number of node in the INIT of NODE: {}".format(Node.get_num_node()))
def run(self):
while True:
self.queue.get()
print("Number of node inside the NODE: {}".format(Node.get_num_node()))
这是主要内容:
if __name__ == '__main__':
nodes = []
# CREATE 3 NODE
for i in range(2):
p = Node(Queue())
p.start()
nodes.append(p)
print("Number of node inside the MAIN: ",Node.get_num_node())
msg = input("\nInsert message> ")
for n in nodes:
n.queue.put((msg,0))
time.sleep(1)
print("Number of node inside the MAIN: ",Node.get_num_node())
当我运行它时,输出为:
Number of node in the INIT of NODE: 1
Number of node inside the MAIN: 1
Number of node in the INIT of NODE: 2
Number of node inside the MAIN: 2
Insert message> 0
Number of node inside the NODE: 0
Number of node inside the NODE: 0
Number of node inside the MAIN: 2
为什么会这样?