if __ name__ ==”__main__”的作用
【摘要】 if __ name__ ==”__main__”的作用 if __ name__ ==”__main__” 在不同的场景下应用不同:常见用法是用于区分脚本和模块。 如果当前文件里写了这句判断,在当前文件运行时,该条件成立;而该文件被当作模块导入到其他文件时,此条件则不成立了。此时__name__ 等于模块名。所以用这条语句很好的限制了文件被当作模块来进行使用。另外,这条语句的下划线...
if __ name__ ==”__main__”的作用
if __ name__ ==”__main__” 在不同的场景下应用不同:
常见用法是用于区分脚本和模块。如果当前文件里写了这句判断,在当前文件运行时,该条件成立;而该文件被当作模块导入到其他文件时,此条件则不成立了。此时__name__ 等于模块名。所以用这条语句很好的限制了文件被当作模块来进行使用。另外,这条语句的下划线是双下划线,并且所有标点符号是英文下的标点符号。
另一用法是在线程进程中使用,使用该语句,是表示一个程序主入口的象征。
它是线程进程里的一个习惯写法,在进程里必须要使用这条语句开启主程序,否则运行会报错。
这是 Windows 上多进程的实现问题。在 Windows 上,子进程会自动 import 启动它的这个文件,而在 import 的时候是会执行这些语句的。如果你这么写的话就会无限递归创建子进程报错。但是在multiprocessing.Process的源码中是对子进程再次产生子进程是做了限制的,是不允许的,于是出现如上的错误提示。所以必须把创建子进程的部分用那个 if 判断保护起来,import 的时候 name 不是 main ,就不会递归运行了。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)