rank | vote | view | answer | url |
---|---|---|---|---|
5 | 4348 | 1893044 | 29 | url |
if __name__ == "__main__":
有什么作用?
# Threading example
import time, thread
def myfunction(string, sleeptime, lock, *args):
while True:
lock.acquire()
time.sleep(sleeptime)
lock.release()
time.sleep(sleeptime)
if __name__ == "__main__":
lock = thread.allocate_lock()
thread.start_new_thread(myfunction, ("Thread #: 1", 2, lock))
thread.start_new_thread(myfunction, ("Thread #: 2", 2, lock))
当 Python 解析器读取一个源文件时, 会执行里面所有的代码.
但是在它执行之前会定义一些特殊的变量.例如,如果 Python 解析器把一个 module(the source file)当成主程序来执行的话, 它会把 __name__
的值设置成为 __main__
.如果这个文件是被其他 module 引入的, __name__
的名字将会被设成 module 的名字.
在你给的例子中, 我们假设作为一个主程序来执行, 例如在 shell 里执行如下命令
python threading_example.py
当设置好特殊变量后, 它会执行 import
声明并且开始载入这些 modules.它会执行 def
代码块, 创建一个函数对象并且会创建一个 myfunction
的变量指向这个函数对象.接下来它会读取 if
语句并且判断 __name__
是否等于 __main__
, 如果等于就执行代码块里面的程序.
你想创建一个 module (一个 .py
文件), 同时也想能够被其他 module 引用.填入 if __name__ == "__main__":
能使你在以这个 module 作为主程序时才会执行, 而其他外部引用不会执行这些代码.
可以在 这里 查看更多细节