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 相关文章推荐
numpy.std() 计算矩阵标准差的方法
Jul 11 Python
Python Tkinter模块实现时钟功能应用示例
Jul 23 Python
5款Python程序员高频使用开发工具推荐
Apr 10 Python
计算机二级python学习教程(3) python语言基本数据类型
May 16 Python
Django中信号signals的简单使用方法
Jul 04 Python
Django 自定义分页器的实现代码
Nov 24 Python
python多进程重复加载的解决方式
Dec 13 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
Feb 20 Python
python安装cx_Oracle和wxPython的方法
Sep 14 Python
matplotlib之多边形选区(PolygonSelector)的使用
Feb 24 Python
用Python提取PDF表格的方法
Apr 11 Python
Python中的xlrd模块使用整理
Jun 15 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防注入,表单提交值转义的实现详解
2013/06/10 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
jquery ajax的success回调函数中实现按钮置灰倒计时
2013/11/19 Javascript
JS实现单行文字不间断向上滚动的方法
2015/01/29 Javascript
jQuery Validate初步体验(一)
2015/12/12 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
2016/04/14 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
微信小程序开发之入门实例教程篇
2017/03/07 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
全面分析JavaScript 继承
2019/05/30 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
javascript前端和后台进行数据交互方法示例
2020/08/07 Javascript
讲解Python中for循环下的索引变量的作用域
2015/04/15 Python
Python 26进制计算实现方法
2015/05/28 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
python的常用模块之collections模块详解
2018/12/06 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
2019/08/13 Python
提升python处理速度原理及方法实例
2019/12/25 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
Python爬虫新手入门之初学lxml库
2020/12/20 Python
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
如何通过jdbc调用存储过程
2012/04/19 面试题
软件工程毕业生自荐信
2014/07/04 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
让世界充满爱观后感
2015/06/10 职场文书
安全主题班会教案
2015/08/12 职场文书
班干部学习委员竞选稿
2015/11/20 职场文书
民事调解协议书
2016/03/21 职场文书
2019年世界儿童日宣传标语
2019/11/22 职场文书
如何用python插入独创性声明
2021/03/31 Python
go 原生http web 服务跨域restful api的写法介绍
2021/04/27 Golang
ant design vue的form表单取值方法
2022/06/01 Vue.js