我有这段代码:
import urllib2
import thread
a = 0
def workers():
while 1:
a+=1
silva = urllib2.urlopen('http://en.dilandau.eu/download_music/said-the-whale-'+str(a)+'.html')
si = silva.read()
if 'var playlist' not in si:
print a
break
thread.start_new_thread(workers,())
while 1:
print '---'
但是我收到了错误:
Unhandled exception in thread started by <function workers at 0x0000000002B1FDD8>
有谁知道我为什么会收到这个错误?
答案 0 :(得分:2)
我运行了一个更简单的代码版本,除了Unhandled Exception消息之外还看到了堆栈跟踪。它应该可以帮助您找到问题。
您应该考虑一些改进。首先,建议使用threading
以上的高级库thread
。其次,你正在忙着等待while 1
循环!使用join()
更为可取。通常它也有助于在您的工作代码周围放置一个异常处理程序。例如,
import threading
import time
import traceback
def worker():
try:
for i in range(5):
print i
time.sleep(0.5)
assert 0, 'bad'
except:
traceback.print_exc()
t = threading.Thread(target=worker)
t.start()
t.join()
print 'completed'
答案 1 :(得分:1)
你在函数中指定为“a”,因此它默认为函数的本地。
例外可能是:
UnboundLocalError: local variable 'a' referenced before assignment
答案 2 :(得分:0)
如果只是为了消除错误
,在worker()函数中添加global a