Python中模块变量的生命周期

时间:2017-01-10 14:26:51

标签: python

请你解释一下这些基础知识 server_init() -> start_db() -> it makes variable state = 5 -> server starts start_client() in 2 seconds -> client calls get_state() and gets value = 5 客户看到5是对的吗?模块变量有多长? 感谢。

server.py:

def t3():
    time.sleep(2)
    start_client()

def server_init():
    start_db()
    thread = threading.Thread(target=t3)
    thread.start()

server_init()

db.py

state = 0
q = queue.Queue()

def t2():
    global state
    while state < 5:
        state += 1
        global q
    q.put(state)

def start_db():
    thread = threading.Thread(target=t2)
    thread.start()

def get_state():
    print('q.get(): %s' % q.get())
    print('state: %s' % state)

client.py

def t1():
    get_state()  # prints 5

def start_client():
    print('start_client')
    thread = threading.Thread(target=t1)
    thread.start()

1 个答案:

答案 0 :(得分:1)

模块存储在全局映射sys.modules中。只要任何引用可用于模块对象,它就会保持活动状态。通常,在Python解释器关闭之前,模块不会从sys.modules中删除。