python多线程的一个失误

普通的python 类声明:

 

class ConnectDBChecker(object):

 多线程类声明:

 

class MultiConnectDBChecker(Thread):

#需要提前 from threading import Thread

 

项目中开发多线程时,误将Thread写为object,各种报错,代码复制粘贴时疏忽。

 

本人经历如下,首先报错:

 

 File "multiConnectCheck_T.py", line 16, in __init__
    Thread.__init__(self)
TypeError: unbound method __init__() must be called with Thread instance as first argument (got MultiConnectDBChecker instance instead)

 

 

网上查资料,会让你用

 

super(MultiConnectDBChecker,self).__init__()

 代替

 

Thread.__init__(self)

 但你替换后,又会报以下错:

 

 File "multiConnectCheck_T.py", line 43, in bootStrap
    worker.start()
AttributeError: 'MultiConnectDBChecker' object has no attribute 'start'

 

### Python 创建过程中遇到的段错误解决方案 当Python程序遭遇 `Segmentation fault (core dumped)` 错误时,这通常意味着程序尝试访问未分配给它的内存区域。此类问题可能由多种原因引起,包括但不限于第三方库中的C扩展模块缺陷、不兼容的依赖项版本或是特定操作系统配置下的问题。 对于该类问题的一个常见处理方法是从简化环境中开始排查[^1]: #### 一、检查并更新软件包 确保所有使用的Python包都是最新稳定版,尤其是那些涉及底层系统调用或硬件交互的库。过期版本可能存在已知的安全漏洞或稳定性问题,这些都可能导致段错误的发生。 ```bash pip install --upgrade pip setuptools wheel pip list --outdated | cut -d ' ' -f1 | xargs pip install --upgrade ``` #### 二、验证外部依赖关系 如果项目依赖于某些编译后的组件(如通过`sklearn.externals.joblib`加载模型),则需确认其构建过程无误,并且与当前平台架构相匹配。有时重新安装受影响的库能解决问题[^3]。 ```bash pip uninstall scikit-learn joblib pip install scikit-learn[joblib] ``` #### 三、启用调试模式 为了更精确地定位引发崩溃的具体位置,在启动解释器之前设置环境变量`PYTHONFAULTHANDLER=1`可让Python在发生致命异常时打印堆栈跟踪信息;另外还可以考虑利用GDB等工具来进行深入分析[^2]。 ```bash export PYTHONFAULTHANDLER=1 gdb python (gdb) run your_script.py ``` #### 四、审查代码逻辑 仔细检查源码中是否存在潜在的风险操作,比如越界数组索引、释放后再次引用的对象指针以及多线程竞争条件等。良好的编程实践有助于减少这类低级失误的概率。 #### 五、测试最小化案例 创建一个尽可能简单的脚本来重现相同的行为表现形式,从而排除复杂业务场景带来的干扰因素影响判断准确性。一旦找到最简化的失败样例,则更容易识别根本原因所在。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值