之前写了个python脚本用selenium+phantomjs爬新帖子,在循环拉取页面的过程中,phantomjs总是block住,使用WebDriverWait设置最长等待时间无效。用firefox替换phantomjs无改善
因为这个脚本不会长期使用,因此采取临时办法,新开一个子线程固定周期杀死phantomjs进程,这样selenium就会在block最多不超过此周期后返回。当然在爬虫脚本中做一些微调防止部分url被跳过
定时执行任务采用sched模块,很多人将其与crontab相提并论
杀死特定进程的命令
复制代码 代码如下:
kill -9 pid命令可以无条件终止对应pid进程
获取名为phantomjs的进程pid
ps命令列出进程信息
grep过滤得指定名字的进程信息
awk '{print $2}'提取第二列pid信息
最终命令为:kill -9 `ps -aux|grep phantomjs|awk '{print $2}'`
python可以用os.system()执行shell命令
使用sched模块周期执行任务
sched模块使用heapq保存event队列,其event为namedtuple类型
sched需要提供两个函数,一个用来获取时间变化,一个用于等待一段时间,可自定义
基本API
sched.scheduler(time_func, sleep_func) 函数返回一个scheduler对象,timefunc是一个返回数字的计时函数,而sleepfunc可接受此数字参数,并延时相应时间
scheduler.enter(delay, priority, action, argument)在delay时间段后,用参数argument调用action, argument必须是一个tuple。若要在固定时刻运行,则应调用scheduler.enterabs
scheduler.cancel(event)取消定时任务。event为enter函数返回值
scheduler.run()开始执行
任务时间重叠
在执行任务时有可能要block一段时间,任务返回后可能已经超过下一个任务的定时时刻,这种情况下会立刻执行下一个任务,而不会跳过
周期执行
类似于递归调用,写一个wrapper function,在任务里面再次定时下一次任务即可
def wrapper(func, delay): scheduler.enter(delay, 0, wrapper, (func, delay)) func()
最终代码
import os, time, sched schedule = sched.scheduler(time.time, time.sleep) cmd = '''kill -9 `ps -aux|grep phantomjs|awk '{print $2}'` ''' def recycle_eval(c, inc): schedule.enter(inc, 0, recycle_eval, (c, inc)) os.system(c) print time.ctime(),'phantomjs killed' if __name__ == '__main__': inc = 180 schedule.enter(inc, 0, recycle_eval, (cmd, inc)) schedule.run()
以上所述是小编给大家介绍的python定时杀进程的相关知识,希望能够帮助到大家!
python杀进程,定时杀进程
更新动态
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]