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生成随机验证码的两种方法
Dec 22 Python
Python 类与元类的深度挖掘 II【经验】
May 06 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
Jun 21 Python
浅谈Python中带_的变量或函数命名
Dec 04 Python
机器学习10大经典算法详解
Dec 07 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
使用Python读取安卓手机的屏幕分辨率方法
Mar 31 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
Python解决两个整数相除只得到整数部分的实例
Nov 10 Python
在PyCharm下打包*.py程序成.exe的方法
Nov 29 Python
使用python的pexpect模块,实现远程免密登录的示例
Feb 14 Python
Python实现寻找回文数字过程解析
Jun 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
杏林同学录(一)
2006/10/09 PHP
php生成带logo二维码方法小结
2016/04/08 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
javascript 树形导航菜单实例代码
2013/08/13 Javascript
JS实现页面超时后自动跳转到登陆页面
2015/01/19 Javascript
jquery操作angularjs对象
2015/06/26 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
单行 JS 实现移动端金钱格式的输入规则
2017/05/22 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
vue单页应用中如何使用jquery的方法示例
2017/07/27 jQuery
React Native实现地址挑选器功能
2017/10/24 Javascript
Vue中render方法的使用详解
2018/01/26 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
python使用PyFetion来发送短信的例子
2014/04/22 Python
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
python画出三角形外接圆和内切圆的方法
2018/01/25 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
2019/08/26 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
Python编程快速上手——选择性拷贝操作案例分析
2020/02/28 Python
教师远程培训感言
2014/03/06 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
青年文明号汇报材料
2014/12/23 职场文书
财务工作失误检讨书
2015/02/19 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
大学生实习介绍信
2015/05/05 职场文书
90条交通安全宣传标语
2019/10/12 职场文书
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL