python中的多处理-UnboundLocalError:赋值前引用了局部变量'data'

库玛·加瓦德(Kumar Gavade)

我正在尝试访问一个API,该API返回一组产品。由于执行速度很慢,所以我希望可以使用多重处理来使其更快。使用简单的for循环进行访问时,API可以完美运行。

这是我的代码:

from multiprocessing import Pool
from urllib2 import Request, urlopen, URLError
import json

def f(a):
    request = Request('API'+ str(a)) 
    try:
        response = urlopen(request)
        data = response.read()
    except URLError, e:
        print 'URL ERROR:', e
    s=json.loads(data)
    #count += len(s['Results'])
    #print count
    products=[]
    for i in range(len(s['Results'])):
        if (s['Results'][i]['IsSyndicated']==False):        
            try:
                products.append(int(s['Results'][i]['ProductId']))
            except ValueError as e:
                products.append(s['Results'][i]['ProductId'])
    return products

list=[0,100,200]

if __name__ == '__main__':
    p = Pool(4)
    result=p.map(f, list)
    print result

这是错误消息:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\z080302\Desktop\WinPython-32bit-2.7.6.3\python-2.7.6\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 540, in runfile
    execfile(filename, namespace)
  File "C:/Users/z080302/Desktop/Python_Projects/mp_test.py", line 36, in <module>
    result=p.map(f, list)
  File "C:\Users\z080302\Desktop\WinPython-32bit-2.7.6.3\python-2.7.6\lib\multiprocessing\pool.py", line 250, in map
    return self.map_async(func, iterable, chunksize).get()
  File "C:\Users\z080302\Desktop\WinPython-32bit-2.7.6.3\python-2.7.6\lib\multiprocessing\pool.py", line 554, in get
    raise self._value
UnboundLocalError: local variable 'data' referenced before assignment

我在想,即使进行了多处理,该功能仍将按顺序执行。那我为什么要得到UnboundLocalError呢?

幼虫

在此代码中:

try:
    response = urlopen(request)
    data = response.read()
except URLError, e:
    print 'URL ERROR:', e

如果urlopen引发URLError异常,则以下行(data = response.read()不会执行。因此,当您执行以下操作时:

s=json.loads(data)

data从未分配过该变量您可能想在发生时中止处理URLError,因为这表明您将没有任何JSON数据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

UnboundLocalError:赋值之前引用了局部变量“ e”

Python | 如果变量:UnboundLocalError:赋值之前引用了局部变量“变量”

麻烦:UnboundLocalError:赋值之前引用了局部变量

关于UnboundLocalError:在Python中赋值之前引用了局部变量'font_size'

为什么python显示UnboundLocalError:赋值之前引用了局部变量'w'?

UnboundLocalError:在Pygame 2.0中进行赋值,向后和向前移动之前引用了局部变量'x_direction'

UnboundLocalError:赋值之前引用了局部变量'turn'-python

Python pygame-弹跳球(UnboundLocalError:分配前引用了局部变量'move_y')

Python3 UnboundLocalError:赋值前引用了局部变量

UnboundLocalError:在为Simbols Fixer分配Python之前引用了局部变量'X'

Python – UnboundLocalError:赋值之前引用了局部变量'p'。While Loop根据我输入的时间提供不同的输出

UnboundLocalError:赋值之前引用了局部变量“ cars”

Python错误-UnboundLocalError:分配前引用了局部变量

'UnboundLocalError:赋值之前引用了局部变量'lower'

UnboundLocalError:赋值前引用了局部变量“readlgt”

UnboundLocalError:赋值前引用了局部变量“med”

为什么在赋值后定义 movex 时,python 3.5 会返回 UnboundLocalError:在赋值之前引用了局部变量“movex”

Python - 在数据框中添加行时出错:赋值前引用了局部变量“finallog”

UnboundLocalError:赋值前引用了局部变量“检查”

UnboundLocalError:赋值前引用了局部变量“strdate”

UnboundLocalError:赋值前引用了局部变量“photoshop”

Python - UnboundLocalError:在赋值之前引用了局部变量“d”

Python Hangman 问题(第 12 行:UnboundLocalError:赋值前引用的局部变量 'a')

UnboundLocalError:赋值前引用了局部变量“照片”

UnboundLocalError:赋值前引用了局部变量“depcoord”

“在赋值之前引用了局部变量‘stringData’”python中的错误

UnboundLocalError:在赋值之前引用了局部变量 <function>

UnboundLocalError:在创建构造函数后在成员函数中赋值之前引用了局部变量“温度”?

UnboundLocalError:在为一个变量赋值之前引用了局部变量“x”,而其他变量在 Python 中工作