python循环定时中断执行某一段程序的实例


Posted in Python onJune 29, 2019

问题说明

最近在写爬虫,由于单个账号访问频率太高会被封,所以需要在爬虫执行一段时间间隔后自己循环切换账号

所以就在想,有没有像单片机那样子设置一个定时中断,再定义一个中断入口,这样子每隔一段时间执行一次中断

当然不能用sleep,这样子整个进程就停在这了,而不是接着爬数据

解决方法

用到threading的Timer,也类似单片机那样子,在中断程序中再重置定时器,设置中断,python实例代码如下

import threading
import time
def change_user():
  print('这是中断,切换账号')
  t = threading.Timer(3, change_user)
  t.start()
#每过3秒切换一次账号
t = threading.Timer(3, change_user)
t.start()
while True:
  print('我在爬数据')
  time.sleep(1)

输出就像这样子:

我在爬数据
我在爬数据
我在爬数据
这是中断,切换账号
我在爬数据
我在爬数据
我在爬数据
这是中断,切换账号
我在爬数据

现在问题就解决啦!

再想想单独对于这个例子来说也是可以用sleep的,代码如下

import threading
import time
def change_user():
  while True:
    print('这是中断,切换账号')
    time.sleep(3)
def spider():
  while True:
    print('我在爬数据')
    time.sleep(1)
t1 = threading.Thread(target=change_user)
t2 = threading.Thread(target=spider)
t2.start()
t1.start()
t2.join()
t1.join()

因为两个线程再执行sleep的时候会释放GIL锁,被另一线程抢到GIL锁,也可以实现定时切换账号,不过这个对于实际应用可以不太方便,所以推荐使用第一种方法

以上这篇python循环定时中断执行某一段程序的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python发送伪造的arp请求
Jan 09 Python
python的三目运算符和not in运算符使用示例
Mar 03 Python
Python3实现连接SQLite数据库的方法
Aug 23 Python
使用Python的turtle模块画图的方法
Nov 15 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
Nov 16 Python
详解用python写网络爬虫-爬取新浪微博评论
May 10 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
Aug 05 Python
python sorted方法和列表使用解析
Nov 18 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
Jan 12 Python
如何向scrapy中的spider传递参数的几种方法
Nov 18 Python
Python爬虫中Selenium实现文件上传
Dec 04 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
Feb 01 Python
python顺序执行多个py文件的方法
Jun 29 #Python
如何使用python把ppt转换成pdf
Jun 29 #Python
对Python的交互模式和直接运行.py文件的区别详解
Jun 29 #Python
使用python搭建服务器并实现Android端与之通信的方法
Jun 28 #Python
python全栈要学什么 python全栈学习路线
Jun 28 #Python
使用python 写一个静态服务(实战)
Jun 28 #Python
python适合人工智能的理由和优势
Jun 28 #Python
You might like
php去除换行(回车换行)的三种方法
2014/03/26 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
2014/08/21 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
laravel Validator ajax返回错误信息的方法
2019/09/29 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
jquery ui resizable bug解决方法
2010/10/26 Javascript
js中关于String对象的replace使用详解
2011/05/24 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
javascript面向对象之访问对象属性的两种方式分析
2015/01/13 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
Python入门篇之字符串
2014/10/17 Python
python学生管理系统代码实现
2020/04/05 Python
python 移除字符串尾部的数字方法
2018/07/17 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
Django-simple-captcha验证码包使用方法详解
2020/11/28 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
2013/04/07 面试题
哈理工毕业生的求职信
2013/12/22 职场文书
应届生简历中的自我评价
2014/01/13 职场文书
函授大学生自我鉴定
2014/02/05 职场文书
文明城市标语
2014/06/16 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python
springboot如何接收application/x-www-form-urlencoded类型的请求
2021/11/02 Java/Android