我在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)
答案 0 :(得分:0)
如您在错误回溯中列出的导入链中所见,Python尝试从以下位置导入Queue
定义:
/home/vivek/Desktop/code/par/queue.py
这表明您已经以某种方式破坏了Python导入逻辑,因为通常它会优先处理/lib
/usr/lib
文件夹中的模块。如果您设置了自定义PYTHONPATH
环境变量或弄乱了sys.path
之类的模块变量,通常会发生这种情况。
快速解决方案是将文件从queue.py
重命名为其他名称。