python定义主块之前/之后的变量差
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python定义主块之前/之后的变量差相关的知识,希望对你有一定的参考价值。
在主块之前或之后定义变量时,python有什么区别?请参见以下代码示例中的变量“ lock”。
以下代码有效:
import multiprocessing
from multiprocessing import Lock
lock=Lock()
def single_process(num):
lock.acquire()
print(num)
lock.release()
if __name__ == "__main__":
p1 = multiprocessing.Process(target=single_process, args=(123,))
p2 = multiprocessing.Process(target=single_process, args=(456,))
p1.start()
p2.start()
p1.join()
p2.join()
但是以下代码不起作用,表示未定义锁定:
import multiprocessing
from multiprocessing import Lock
def single_process(num):
lock.acquire()
print(num)
lock.release()
if __name__ == "__main__":
lock=Lock()
p1 = multiprocessing.Process(target=single_process, args=(123,))
p2 = multiprocessing.Process(target=single_process, args=(456,))
p1.start()
p2.start()
p1.join()
p2.join()
答案
在第一个代码段中,lock
是在全局范围内定义的,就像在该行之后的任何代码块中都可以访问该对象一样。
而main
函数有其自己的范围。因此,在第二个代码段中,lock
在main
函数的范围内定义,因此,除非您将single_process
明确传递给它们,否则其他函数将无法访问它们。
以上是关于python定义主块之前/之后的变量差的主要内容,如果未能解决你的问题,请参考以下文章