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
数组
答案 0 :(得分:0)
您无需将NexusConnectedClients
声明为全局,因为它在run
方法中可见。如果要(重新)绑定全局范围中的名称,则必须将变量声明为全局变量。当一个变量是可修改的,而列表是,只需修改它。
相反,您需要做的是规范对NexusConnectedClients
的访问。您正在修改线程内的共享变量,可能不止一个。使用锁。说,我认为在这么小的片段中不能再说了什么。
答案 1 :(得分:0)
解决了这个问题。没有从先前的测试中删除一行代码。该行重置了数组