请你解释一下这些基础知识
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()
答案 0 :(得分:1)
模块存储在全局映射sys.modules
中。只要任何引用可用于模块对象,它就会保持活动状态。通常,在Python解释器关闭之前,模块不会从sys.modules
中删除。