通过多个文件和线程正确传递全局变量

时间:2019-06-07 23:33:08

标签: python multithreading variables global

我正在运行一个服务器,该服务器需要从配置文件中获取多个变量,然后在其余的代码中始终引用这些变量。大多数都以本地人的身份通过,但是我要修改的那个必须是全局的,并且只能设置一次。当我稍后在程序中尝试使用“全局变量未定义”时,我得到了它。该变量在初始文件中设置,然后在线程中调用。

我尝试使用“ global myVariable”对变量进行多种声明,但没有任何改变。这是用于传递到redis流以通过WLAN传输到linux计算机的值。

第一个文件:

import files
from SWConnection import Connection

STREAM_INBOUND = None
STREAM_OUTBOUND = None

if __name__ == '__main__':

    city = getConfigVariable(Config, 'User', 'City')

    STREAM_INBOUND = city + '_IN_TEST'
    STREAM_OUTBOUND = city + '_OUT_TEST'

    connection.clientHandler() ##Opens script to handle client connection

第二个文件:

 class Connection(object):
    def clientHandler(self):

        newThread = ClientThread(client, ip, port, self.psql, self.rdb)

第三文件:

class ClientThread(threading.Thread):
     def function(self):

        global STREAM_INBOUND

        searchFromTime = int((time.time()-1)*1000)
        returned_stream_results = self.rdb.xread({STREAM_INBOUND: str(searchFromTime)})

当前STREAM_INBOUND值是硬编码的,但是我们希望能够使用配置文件进行设置,因此我们不必在流变化之间重新编译。

0 个答案:

没有答案