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 04 Python
python得到qq句柄,并显示在前台的方法
Oct 14 Python
python调用虹软2.0第三版的具体使用
Feb 22 Python
python实现几种归一化方法(Normalization Method)
Jul 31 Python
Django中的静态文件管理过程解析
Aug 01 Python
python3操作注册表的方法(Url protocol)
Feb 05 Python
python Plotly绘图工具的简单使用
Mar 03 Python
关于Keras Dense层整理
May 21 Python
Python urllib2运行过程原理解析
Jun 04 Python
python读取excel进行遍历/xlrd模块操作
Jul 12 Python
分享unittest单元测试框架中几种常用的用例加载方法
Dec 02 Python
python 视频下载神器(you-get)的具体使用
Jan 06 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中的cookie不用刷新就生效的方法
2012/02/04 PHP
php中Ctype函数用法详解
2014/12/09 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
2019/04/02 PHP
php实现对短信验证码发送次数的限制实例讲解
2021/03/04 PHP
一些常用的Javascript函数
2006/12/22 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
js DOM 元素ID就是全局变量
2012/09/20 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
js在指定位置增加节点函数insertBefore()用法实例
2015/01/12 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
JavaScript分页功能的实现方法
2015/04/25 Javascript
jQuery实现下滑菜单导航效果代码
2015/08/25 Javascript
JavaScript位移运算符(无符号) >>> 三个大于号 的使用方法详解
2016/03/31 Javascript
Node学习记录之cluster模块
2017/05/31 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
如何在selenium中使用js实现定位
2020/08/18 Javascript
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
[01:50]《我与DAC》之玩家:iG夺冠时的那面红旗
2018/03/29 DOTA
[37:45]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第二场 12.09
2020/12/11 DOTA
Python中使用Tkinter模块创建GUI程序实例
2015/01/14 Python
Python实现快速多线程ping的方法
2015/07/15 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
pytorch实现mnist数据集的图像可视化及保存
2020/01/14 Python
Python控制台实现交互式环境执行
2020/06/09 Python
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
统计学教授推荐信
2014/09/18 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
感谢信的格式
2015/01/21 职场文书
爱的教育读书笔记
2015/06/26 职场文书
2016年度优秀辅导员事迹材料
2016/02/26 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书