返回顶部
首页 > 资讯 > 后端开发 > Python >深入浅析python定时杀进程
  • 840
分享到

深入浅析python定时杀进程

进程python 2022-06-04 19:06:29 840人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

之前写了个python脚本用selenium+phantomjs爬新帖子,在循环拉取页面的过程中,phantomjs总是block住,使用WEBDriverWait设置最长等待时间无效。用firefox替换

之前写了个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定时杀进程的相关知识,希望能够帮助到大家!

--结束END--

本文标题: 深入浅析python定时杀进程

本文链接: https://lsjlt.com/news/14793.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 深入浅析python定时杀进程
    之前写了个python脚本用selenium+phantomjs爬新帖子,在循环拉取页面的过程中,phantomjs总是block住,使用WebDriverWait设置最长等待时间无效。用firefox替换...
    99+
    2022-06-04
    进程 python
  • 深入浅析Java中的定时器
    今天就跟大家聊聊有关深入浅析Java中的定时器,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。定时器问题  定时器属于基本的基础组件,不管是用户空间的程序开发,还是内核空间的程序开发,...
    99+
    2023-05-31
    java 定时器 ava
  • 深入浅析python中的多进程、多线程、协程
    进程与线程的历史 我们都知道计算机是由硬件和软件组成的。硬件中的CPU是计算机的核心,它承担计算机的所有任务。 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配、任务的调度。 程序...
    99+
    2022-06-04
    多线程 进程 python
  • 深入浅析spring中的多线程与定时任务
    深入浅析spring中的多线程与定时任务?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.spring多线程任务的使用spring通过任务执行器TaskExecutor来实...
    99+
    2023-05-31
    spring 定时任务 多线程
  • 深入浅析Node中的进程和线程
    // app.js const Koa = require('koa') const router = require('koa-router')() const app = new Koa() // 用来...
    99+
    2023-05-14
    nodejs​ 进程 线程
  • 深入浅析Android应用中的多进程
    这篇文章将为大家详细讲解有关深入浅析Android应用中的多进程,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。android:process应用实现多进程需要依赖于android:proce...
    99+
    2023-05-31
    android roi 多进程
  • 深入浅析Node的进程管理工具“pm2”
    我们使用命令行方式启动project1应用,进入到project文件目录,运行pm2 start index.js命令,我们没有在命令中设定任何参数,pm2 会自动按照默认参数值进行执行。例如自动将入口文件的文件名index作为应用名称。几...
    99+
    2023-05-14
    node nodejs
  • 深入浅析Python数据分析的过程记录
    目录一、需求介绍二、以第1、个为例进行数据分析1、获取一天的数据2、开始一天的数据的分析3、循环日期进行多天的数据分析:4、将数据写入Excel表格中三、完整的代码展示:总结一、需求...
    99+
    2024-04-02
  • 深入浅析python继承问题
    有如下的代码: class p1: def __init__(self,a,b): print("init in p1") self.a1=a self.b1=b self.f1() def f1(se...
    99+
    2022-06-04
    python
  • 深入浅析Python字符编码
    Python的字符串编码规则一直让我很头疼,花了点时间研究了下,并不复杂。主要涉及的内容有常用的字符编码的特点,并介绍了在python2.x中如何与编码问题作战,本文关于Python的内容仅适用于2.x,3...
    99+
    2022-06-04
    字符 Python
  • Python深入浅出分析元类
    目录一、类和对象二、type类三、元类Metaclass四、自定义一个元类一、类和对象 Python属于动态类型的语言,而动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时...
    99+
    2024-04-02
  • 深入解析Python中的多进程
    目录前言1.创建进程2.多进程中的Queue3.多进程与多线程的性能比较4.进程池pool5.共享内存6.进程锁lock前言 现在我们的计算机都是多个核的,通俗来说就是多个处理或者计...
    99+
    2024-04-02
  • 深入浅析vue2.x的进阶用法
    Vue是当前最为流行的前端框架之一。它的设计理念优雅、简洁,易于掌握。本文将介绍Vue2.x的进阶用法,涵盖了Vue的模板语法、组件化开发、路由和状态管理等方面。一、模板语法条件渲染Vue中的条件渲染通过v-if、v-else、v-show...
    99+
    2023-05-14
  • mysql linux怎么定时杀掉sleep进程
    这篇文章主要讲解了“mysql linux怎么定时杀掉sleep进程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql linux怎么定时杀掉slee...
    99+
    2024-04-02
  • 深入浅析Node.js单线程模型
    Node.js采用 事件驱动 和 异步I/O 的方式,实现了一个单线程、高并发的运行时环境,而单线程就意味着同一时间只能做一件事,那么Node.js如何利用单线程来实现高并发和异步I/O?本文将围绕这个问题...
    99+
    2022-06-04
    单线程 模型 Node
  • 【node进阶】深入浅出websocket即时通讯(一)
    ✅ 作者简介:一名普通本科大三的学生,致力于提高前端开发能力 ✨ 个人主页:前端小白在前进的主页 🔥 系列专栏 : node.js学习专栏 ⭐️ 个人社区 : 个人交流社区 🍀 学习格言: ☀️ 打不倒你...
    99+
    2023-08-20
    websocket 服务器 网络协议 node.js 前端
  • Python深入浅出分析enum枚举类
    目录枚举类Enum总结枚举类Enum 枚举类,在企业开发中用的比较多 当我们需要定义常量时,一个办法是用大写的变量通过整数来定义,例如月份: # 当项目中需要使用12个月份时JAN ...
    99+
    2024-04-02
  • 深入浅析C# 11 对 ref 和 struct 的改进
    目录前言背景ref 字段生命周期scopedunscopedref struct 约束反射实际用例栈上定长列表栈上链表未来计划高级生命周期总结前言 C# 11 中即将到来一个可以让重...
    99+
    2024-04-02
  • 由浅入深介绍 Python Websocket 编程
    目录 1. 为什么使用 Websocket 1.1 websocket 协议简介1.2 基本原理 2. 如何用 Python 搭建 Websocket 服务2.1 安装websocket...
    99+
    2023-09-04
    websocket python 网络协议 javascript
  • 深入浅析Android手机卫士保存密码时进行md5加密
    推荐阅读: 浅析Android手机卫士自定义控件的属性 浅析Android手机卫士关闭自动更新 详解Android 手机卫士设置向导页面 一般的手机没有root权限,进不去da...
    99+
    2022-06-06
    加密 md5加密 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作