我在 python 的线程内执行的一段代码有问题。一切正常,直到我开始使用超过 100 或 150 个线程,然后在多个线程中出现以下错误:
resp.read(1)
UnboundLocalError: local variable 'resp' referenced before assignment.
代码如下:
try:
resp = self.opener.open(request)
code = 200
except urllib2.HTTPError as e:
code = e.code
#print e.reason,_url
#sys.stdout.flush()
except urllib2.URLError as e:
resp = None
code = None
try:
if code:
# ttfb (time to first byte)
resp.read(1)
ttfb = time.time() - start
# ttlb (time to last byte)
resp.read()
ttlb = time.time() - start
else:
ttfb = 0
ttlb = 0
except httplib.IncompleteRead:
pass
正如您所看到的,如果“resp”由于异常而没有被分配,它应该引发异常并且“code”不能被分配,所以它不能进入“resp.read(1)”。
有人知道它失败了吗?我想它与范围有关,但我不知道如何避免这种情况或如何以不同的方式实现它。
谢谢并恭祝安康。