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的Django框架中加载模版的方法
Jul 16 Python
python控制台中实现进度条功能
Nov 10 Python
Python基于pillow判断图片完整性的方法
Sep 18 Python
CentOS下使用yum安装python-pip失败的完美解决方法
Aug 16 Python
python+opencv轮廓检测代码解析
Jan 05 Python
python utc datetime转换为时间戳的方法
Jan 15 Python
python 魔法函数实例及解析
Sep 25 Python
python 扩展print打印文件路径和当前时间信息的实例代码
Oct 11 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
Dec 11 Python
python实现IOU计算案例
Apr 12 Python
简单了解Django项目应用创建过程
Jul 06 Python
opencv 图像轮廓的实现示例
Jul 08 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
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
header跳转和include包含问题详解
2012/09/08 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
PHP文件与目录操作示例
2016/12/24 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
popdiv
2006/07/14 Javascript
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
Bootstrap基本组件学习笔记之面板(14)
2016/12/08 Javascript
Vue.js系列之vue-router(上)(3)
2017/01/03 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
vue 组件中添加样式不生效的解决方法
2018/07/06 Javascript
JQuery的加载和选择器用法简单示例
2019/05/13 jQuery
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
[03:48]2014DOTA2 TI专访71DK夺冠不靠小组赛高排名
2014/07/11 DOTA
Python之re操作方法(详解)
2017/06/14 Python
python安装scipy的方法步骤
2019/06/26 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
食品工程专业求职信
2014/06/15 职场文书
付款承诺函范文
2015/01/21 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
导游词之南京中山陵
2019/11/27 职场文书
Pytorch中Softmax与LogSigmoid的对比分析
2021/06/05 Python
cypress测试本地web应用
2022/06/01 Javascript