Python 全局变量不会全局保存


NexusConnectedClients = []
class Thread1(NexusCore.Thread):
    def Run():
        global NexusConnectedClients
        if(IncomingCommand == "ADDCLIENT"):
            NewClientOBJ = [
                LastCID,
                ClientType,
                ClientADDR,
                ClientObject,
                Args[1],
                Args[2],
                '{"events":[]}'
            ]
            NexusConnectedClients.append(NewClientOBJ)
        elif(IncomingCommand == "LISTCLIENTS"):
            SendResponse(NexusConnectedClients)

当我添加客户端时,还可以。当我读取NexusConnectedClients变量时,它被添加到列表中。但是当我运行 LISTCLIENTS 函数时,列表是空的。怎么了?

我稍微简化了代码。 设置了所有变量,所有其他全局变量都按预期工作。

编辑我发现了错误,这段代码没有任何问题,但另一个函数从NexusConnectedClients数组中删除了该元素

不需要将NexusConnectedClients声明为全局,因为它在 run 方法中可见。如果要在全局范围内(重新(绑定名称,则必须将变量声明为全局变量。当变量是可修改的,而列表是可修改的时,只需修改它。

相反,您所要做的就是 规范对NexusConnectedClients的访问 .您正在修改线程中的共享变量,可能不止一个。使用锁。话虽如此,我想在这么小的片段中不能再说什么了。

解决了这个问题。没有从以前的测试中删除一行代码。该行重置了阵列

相关内容

  • 没有找到相关文章

最新更新