在学习多进程时:
import mutiprocessing 报错 :AttributeError: module ‘multiprocessing’ has no attribute ‘Process’
源码如下:
# -*- coding: utf-8 -*-
import multiprocessing as mp
import threading as td
def job(a,b):
print('aaaaaaaaaaaaaaaaaaaa')
if __name__ == '__main__':
p1 = mp.Process(target=job,args=(1,2))
p1.start()
p1.join()
1、最开始以为 multprocessing 拼写错误,求助字典发现英语拼写无误。
2、接着判断 multiprocessing 模块没有安装,后查询发现该模块为自带的。
3、后来检查得知我源代码的名称也是 multiprocessing.py,判断有可能循环导入了自己的这段代码。
修改名称之后发现程序能够正常运行了。
下图:我的工程源码名称也是:multiprocessing.py
python库中的 multiprocessing 模块
修改自己的工程名称为: python_multiprocessing.py, 问题解决!!!
从上面的分析得出,Python的模块导入中遵循一定的顺序,本地的模块如果跟内置模块重名,优先导入本地模块。
查询文档详细解释如下:
当import一个模块后,python会按照下面的顺序来找那个将要导入的模块文件
1、程序的主目录。上一讲中,在codes这个目录中运行交互模式,这时候的主目录就是codes,当在那个交互模式中运行import mmmm的时候,就首先在codes这个目录中搜索相应的文件(找到.py之后编译成为.pyc)。当然,后面在网页编程中,看官会看到,所谓主目录是可以通过顶层文件设置的目录。
2、PYTHONPATH目录。这是一个环境变量设置,如果没有设置则滤去。如何进行环境变量设置,请看官google啦。
3、标准库目录。已经随着Python的安装进入到计算机中的那个。
4、任何.pth文件的内容。如果有这类文件,最后要在这类文件中搜索一下。这是一个简单的方法,在.pth文件中,加入有效目录,使之成为搜索路径。
原文链接:https://blog.csdn.net/xrinosvip/article/details/81909129