来源:python中国网 时间:2020-03-18

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

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

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

  解决的思路

  1 怀疑是cmd本身的bug。

  2 怀疑代码层面有问题,程序没有退出。

  3 怀疑是该进程死掉了。

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

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

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

疑难杂症

Tips:不要怕、多坚持、多动手、付出必有回报。