关于import multiprocessing引用出错
0. 原因
当前文件名与python包体中关键词出现同名,导致循环引用
1. 排查过程
问题代码
import timefrom multiprocessing import Process, Queue # 这里提示错误def producer(queue):queue.put("a")time.sleep(2)def consumer(queue):time.sleep(2)data = queue.get()print(data)if __name__ == '__main__':queue = Queue(10)my_producer = Process(target=producer, args=(queue,))my_consumer = Process(target=consumer, args=(queue,))my_producer.start()my_consumer.start()my_producer.join()my_consumer.join()
提示错误
ImportError: cannot import name 'Process' from 'multiprocessing'
首先,点开python自带的包。粉色表明当前包存在multiprocessing
,不需要再去下载,和包没关系。
然后看当前文件名,multiprocessing.py
,刚好和引入包名称一致,破案!