为什么并行计算写在__name__=="__main__"里?

请问各位大佬
比如以下代码:

import time
from datetime import datetime
import multiprocessing

def add(x, y):
print(datetime.now(), "enter add func...")
time.sleep(2)
print(datetime.now(), "leave add func...")
print()

return x+y

def add_wrap(args):
return add(*args)

if name == "__main__": #(这个地方为什么不写就运行不了?)
pool=multiprocessing.Pool()
print(pool.map(add_wrap, [(1,2),(3,4),(5,6),(7,8)]))

pool.close()
pool.join()

注:
代码转载自:CSDN博主「moxiaomomo」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/moxiaomomo/article/details/77075125

首先,一楼说的没错,的确这一行是入口函数的。
因为前面的 def 就是在定义函数,并没有调用,后面那一句的含义是这样的:

__name__是系统内置变量,代表所在模块名字,也即所在文件名。
当模块直接运行时,如直接运行当前这个 xx.py 文件,__name__的值为“__main__”;

所以只有最后一句的代码才会执行函数调用,否则这个文件中只是 def 了一堆函数,并没有触发调用。

main函数是程序入口 就像大门一样 没有这句 你就没有找到门 所以就进不去后面的逻辑