Python报错: Unhandled exception in thread started by Error in sys.excepthook
Posted on 2015-01-21 in Python by yucongchen
今天要写个简单脚本,模拟同时50个用户往服务器上传东西。 就简单用
thread.start_new_thread(func, ())
结果运行的时候报错:
Unhandled exception in thread started by
Error in sys.excepthook:
Original exception was:
想了一下,原来是子线程还没退出,主线程就退出了,需要确保主线程等待所有子线程退出后再退出,如果主线程比子线程早结束,子线程就会中断,抛出这个异常。简单加个sleep,就没有报错了,当然,比较好的方法是给每个线程都加了一把锁,直到线程运行结束,再释放这个锁。同时在Python的main线程中用一个while循环来不停的判断每个线程锁已释放。
启动线程的时候把锁传进去:
thread.start_new_thread(loop,(function,(),lock));
在线程函数里面使用
lock.release();
在主线程里面使用while循环来检测锁是否都释放了
for lock in locks :
while lock.locked() :
pass;
OK,这样就搞定了。