无法在python3.6中导入多处理队列对象

时间:2018-12-26 10:23:15

标签: python python-3.x multiprocessing python-multiprocessing

我在python中使用多处理库。我有python 3.6。每当我尝试创建多重处理时。 Queue()对象出现错误。

我的代码如下:

 while ((len = inStream.read(buff)) != -1) {
                    total += len;

                   publishProgress("Downloading.. "+Name+" " + (int) ((total * 100) / inStream.read(buff))));
//                    Log.i(TAG, "Progress: Bar with Count " + (int) ((total * 100) / lenghtOfFile));
                    outStream.write(buff, 0, len);


                }

          //  publishProgress();


  @Override
    protected void onProgressUpdate(String... values) {
        this.progressDialog.incrementProgressBy(values[0]);

    }

,错误是:

import multiprocessing

def square(arr,q):
    for i in arr:
        q.put(i*i)


arr=[1,2,3,4,5,6]
q=multiprocessing.Queue()
p1=multiprocessing.Process(target=square,args=(arr,q,))

p1.start()
p1.join()

result=[]

while q.empty() is False:
    result.append(q.get())

print(result)

1 个答案:

答案 0 :(得分:0)

如您在错误回溯中列出的导入链中所见,Python尝试从以下位置导入Queue定义:

/home/vivek/Desktop/code/par/queue.py

这表明您已经以某种方式破坏了Python导入逻辑,因为通常它会优先处理/lib /usr/lib文件夹中的模块。如果您设置了自定义PYTHONPATH环境变量或弄乱了sys.path之类的模块变量,通常会发生这种情况。

快速解决方案是将文件从queue.py重命名为其他名称。