全国医院网站建设,个旧云锡建设集团网站,东营刚刚发生,中小学 网站建设 通知我在跑爬虫程序的时候#xff0c;由于爬虫程序的等待目标服务器返回数据的时间很长#xff0c;而cpu占用很低#xff0c;所以经常挂着代理一跑就跑好几百个。但是爬虫程序通常是写了死循环#xff0c;或直到分配给该进程的任务都跑完才退出的。如果我们想中途结束掉这些任务…我在跑爬虫程序的时候由于爬虫程序的等待目标服务器返回数据的时间很长而cpu占用很低所以经常挂着代理一跑就跑好几百个。但是爬虫程序通常是写了死循环或直到分配给该进程的任务都跑完才退出的。如果我们想中途结束掉这些任务是没办法手工一个一个kill掉的。那么该如何结束这些进程呢
我的方法就是在运行爬虫进程时记录该进程的Pid然后在需要手动结束时再用语句kill掉它们。
for i in {1..100}
do
nohup python NetEase_comms_proxy.py hehe.dat 21 echo $! run.pid
sleep 10
done
上述语句完成了将脚本在后台运行100便并且将pid append到run.pid文件中。其中nohup 是 no hang up的缩写命令。do…done之间是被循环的语句。
接下来就是kill掉它们的语句了我用的python
import os
if __name__ __main__:
fin open(run.pid, r)
pids []
for line in fin:
pids.append(line.strip())
for pid in pids:
cmd kill pid
os.system(cmd)
这样就把记录下来的pid全部kill掉了。
但需要注意的一点时如果在任务运行期间有的进程由于完成任务或者出错而退出。其他的程序可能会share这些进程的Pid,这样如果在运行kill脚本的时候可能附带就把这些进程也给Kill掉了造成不必要的麻烦。
以上这篇用python记录运行pid,并在需要时kill掉它们的实例就是小编分享给大家的全部内容了希望能给大家一个参考也希望大家多多支持脚本之家。