每篇文章努力于解决一个问题!更多精品资源可移步文章底部。

  在cmd下运行python程序卡死,前几年就遇到过类似问题,现在来还原下解决过程。

所运行的程序:搜索引擎关键词排名监控程序(多线程的),约3万个词,可以分关键词种类指定多个域名监控进行监控。(关键词文件是从excel中读取的,excel的每个sheet代表关键词种类,每个sheet第一列放关键词,操作excel的库用的是openpyxl)

遇到的问题:windows下cmd窗口中有时候会卡死,有时候又正常,或者A电脑卡死,B电脑征程。

解决的思路

1 怀疑是cmd本身的bug。

2 怀疑代码层面有问题,程序没有退出,比如某个线程有死循环、或者某个请求没设置timeout超时导致一直阻塞等。

3 怀疑是该进程死掉了。

因为程序有时候正常有时候不正常,通过一些检查可以排除1和2。最大的可能是进程死掉了!在win平台上不好查看某个进程的状态,根据鄙人的知识积累大胆猜测是进程死掉!那么为什么这个python进程会死掉呢?

个人分析是这个程序占用内存太多太久导致操作系统把它干掉了!基于这个假设,在代码里增加了一些内存回收的操作(del和gc模块配合)。具体的操作看图:

单独的del并不能真正删除变量,而是删除了变量的引用,必须结合垃圾回收gc模块手动回收。(ps:这样改进后果然再没有出过问题!把关键词数量增加到了4万也一直没出问题。)

发表评论

邮箱地址不会被公开。 必填项已用*标注