Python报错: Unhandled exception in thread started by Error in sys.excepthook

今天要写个简单脚本,模拟同时50个用户往服务器上传东西。

就简单用

thread.start_new_thread(func, ())

结果运行的时候报错:

Unhandled exception in thread started by 
Error in sys.excepthook: 
Original exception was:

想了一下,原来是子线程还没退出,主线程就退出了,需要 确保主线程等待所有子线程退出后再退出,如果主线程比子线程早结束,子线程就会中断,抛出这个异常。 简单加个sleep,就没有报错了,当然,比较好的方法是给每个线程都加了一把锁,直到线程运行结束,再释放这个锁。同时在Python的main线程中用一个while循环来不停的判断每个线程锁已释放

 locks=[];    
 for i in range(len(seconds)) :    
     lock=thread.allocate_lock();    
     lock.acquire();    
     locks.append(lock);   

启动线程的时候把锁传进去:

 thread.start_new_thread(loop,(function,(),lock));
在线程函数里面使用

lock.release(); 

在主线程里面使用while循环来检测锁是否都释放了

for lock in locks :    
    while lock.locked() :     
        pass;


OK,这样就搞定了。





对于 Kingbase 数据库运行中报错 "unhandled event loop exception java heap space",这通常是由于 Java 堆空间不足引起的。Java 堆是 Java 虚拟机(JVM)用来存储对象实例的内存区域,当堆空间不足时,就会抛出该错误。 要解决这个问题,你可以尝试以下几种方法: 1. 增加 JVM 堆空间:通过调整 JVM 的启动参数来增加堆空间。具体而言,你可以使用 `-Xms` 和 `-Xmx` 参数来分别设置 JVM 的初始堆大小和最大堆大小。例如,可以使用 `-Xms512m -Xmx1024m` 来将初始堆大小设置为 512MB,最大堆大小设置为 1024MB。根据你的实际情况,可以适当调整这些值。 2. 优化数据库查询:检查数据库查询语句是否存在性能问题,例如是否存在大量的全表扫描或者没有正确使用索引。优化查询可以减少内存消耗,降低堆空间的压力。 3. 减少数据量:如果你的数据库中存储了大量数据,考虑清理或归档一些不再需要的数据,以减少内存消耗。 4. 检查代码中的资源泄漏:确保在代码中正确地释放数据库连接、释放查询结果集和关闭文件流等资源,避免资源泄漏导致内存占用不断增加。 5. 升级数据库或使用最新的驱动程序:检查是否存在已知的数据库版本或驱动程序问题,尝试升级数据库或使用最新版本的驱动程序来修复可能的 Bug。 如果上述方法无法解决问题,建议你查阅 Kingbase 数据库的官方文档或联系 Kingbase 的技术支持团队以获取更多帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值