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之集合(set)
Sep 24 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
Apr 11 Python
Python之多线程爬虫抓取网页图片的示例代码
Jan 10 Python
python如何通过实例方法名字调用方法
Mar 21 Python
我用Python抓取了7000 多本电子书案例详解
Mar 25 Python
python实现微信每日一句自动发送给喜欢的人
Apr 29 Python
python实现银联支付和支付宝支付接入
May 07 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
详解有关PyCharm安装库失败的问题的解决方法
Feb 02 Python
python实现人机猜拳小游戏
Feb 03 Python
Python网页解析器使用实例详解
May 30 Python
用python实现一个简单的验证码
Dec 09 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
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
PHP中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
学习php设计模式 php实现观察者模式(Observer)
2015/12/09 PHP
详解PHP中的序列化、反序列化操作
2017/03/21 PHP
[原创]php正则删除img标签的方法示例
2017/05/27 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
Javascript模拟加速运动与减速运动代码分享
2014/12/11 Javascript
jQuery中first()方法用法实例
2015/01/06 Javascript
JS操作HTML自定义属性的方法
2015/02/10 Javascript
js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)
2016/03/09 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
Vue EventBus自定义组件事件传递
2018/06/25 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
关于vue属性使用和不使用冒号的区别说明
2020/10/22 Javascript
如何在VUE中使用vue-awesome-swiper
2021/01/04 Vue.js
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
python合并同类型excel表格的方法
2018/04/01 Python
对Python3 goto 语句的使用方法详解
2019/02/16 Python
对django的User模型和四种扩展/重写方法小结
2019/08/17 Python
2021年的Python 时间轴和即将推出的功能详解
2020/07/27 Python
UI自动化定位常用实现方法代码示例
2020/10/27 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
服务理念口号
2014/06/11 职场文书
自我检讨报告
2015/01/28 职场文书
合理化建议书
2015/02/04 职场文书
单位更名证明
2015/06/18 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书
小学四年级作文之写景
2019/08/23 职场文书
十二月早安励志心语大全
2019/12/03 职场文书
JavaScript使用canvas绘制坐标和线
2021/04/28 Javascript
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技