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线程的两种编程方式
Apr 14 Python
python使用xmlrpclib模块实现对百度google的ping功能
Jun 02 Python
python操作mysql数据库
Mar 05 Python
Python中%r和%s的详解及区别
Mar 16 Python
python实现简单中文词频统计示例
Nov 08 Python
Linux下安装python3.6和第三方库的教程详解
Nov 09 Python
浅析Python3中的对象垃圾收集机制
Jun 06 Python
python+pygame实现坦克大战
Sep 10 Python
Python爬取知乎图片代码实现解析
Sep 17 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
May 13 Python
Python Sqlalchemy如何实现select for update
Oct 12 Python
python自动化调用百度api解决验证码
Apr 13 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中spl_autoload详解
2014/10/17 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
PHP使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
动态样式类封装JS代码
2009/09/02 Javascript
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
拥抱模块化的JavaScript
2012/03/07 Javascript
解析prototype,JQuery中跳出each循环的方法
2013/12/12 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
2014/02/12 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
JavaScript通过字符串调用函数的实现方法
2015/03/18 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
JS判断元素是否在数组内的实现代码
2016/03/30 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
JavaScript之WebSocket技术详解
2016/11/18 Javascript
Vue中封装input组件的实例详解
2017/10/17 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
python获取本机mac地址和ip地址的方法
2015/04/29 Python
Python实现遍历数据库并获取key的值
2015/05/17 Python
遗传算法python版
2018/03/19 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
2013/01/09 HTML / CSS
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
值传递还是引用传递
2015/02/08 面试题
会议开场欢迎词
2014/01/15 职场文书
测量工程专业求职信
2014/02/24 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
师德师风整改措施
2014/10/24 职场文书