当前文件名为:multiprocessing.py
#!/usr/bin/env python3
import os
from multiprocessing import Process
def child_proc(name):
print('child process', name, '[',os.getpid(),']','start running...')
if __name__ == '__main__':
print('parent process', os.getpid())
for i in range(5):
create_childpid = Process(target=child_proc,args=(str(i),))
print('process will start...')
create_childpid.start()
create_childpid.join()
print('process end')
运行:
sice@T:~/lxz$ vim multiprocessing.py
sice@T:~/lxz$ chmod +x multiprocessing.py
sice@T:~/lxz$ ./multiprocessing.py
报错:
Traceback (most recent call last):
File "./multiprocessing.py", line 3, in <module>
from multiprocessing import Process
File "/home/sice/lxz/multiprocessing.py", line 3, in <module>
from multiprocessing import Process
ImportError: cannot import name 'Process'
错误的原因是:文件名跟模块名相同导致错误
当前文件名为:multiprocessing.py
模块名: from multiprocessing import Process
解决方法如下:
第1步.(只要文件名与模块名不同就可以了)修改文件名为:aaa.py
Linux系统下
sice@T:~/lxz$ mv multiprocessing.py aaa.py # 重命名为 aaa.py
window 环境下重命名就可以了
第2步. 删除 multiprocessing.pyc 文件和 __pycache__文件夹,到这里已经全部修改好了
#!/usr/bin/env python3
import os
from multiprocessing import Process
def child_proc(name):
print('child process', name, '[',os.getpid(),']','start running...')
if __name__ == '__main__':
print('parent process', os.getpid())
for i in range(5):
create_childpid = Process(target=child_proc,args=(str(i),))
print('process will start...')
create_childpid.start()
create_childpid.join()
print('process end')
改完运行 aaa.py 就可以了