python 多进程规则

python多进程中,对于子进程的运行机制是:每个子进程中,由于不同的进程之间有独立内存,不会共享,所以每个子进程是通过分别导入所在的脚本模块来实现目标函数的运行的。对于这个机制,有以下两点需要特别注意。

1、由于每个子进程是通过导入所在脚本的模块实现模块中函数的调用的,所以,为了避免将创建子进程的语句也被导入(因为这样就会造成无限循环创建子进程,这显然是不允许的,因此python禁止了在子进程中再创建子进程,否则会报错),创建子进程的语句必须在if __name__=='__main__'语句之后定义,或者如果创建子进程的语句是定义在一个函数中的,那么这个函数调用必须在if __name__=='__main__'语句之后,这是python多进程中的强制性语法规则

2、由于子进程可直接调用的是被导入模块中的属性,因此,子进程中的目标函数应该是被导入的,这样子进程才可以调用到期需要的目标函数,因此,目标函数必须在if __name__=='__main__'语句之前定义,如果是在该语句之后定义,那么由于被导入时这部分是不会被导入的,所以运行时就会报"被导入的主模块没有目标函数属性"这样的错误。

posted @ 2023-06-12 14:27  wangssd  阅读(28)  评论(0编辑  收藏  举报