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 21 Python
python打开url并按指定块读取网页内容的方法
Apr 29 Python
快速解决PyCharm无法引用matplotlib的问题
May 24 Python
Python告诉你木马程序的键盘记录原理
Feb 02 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
Aug 08 Python
基于python traceback实现异常的获取与处理
Dec 13 Python
详解python opencv、scikit-image和PIL图像处理库比较
Dec 26 Python
Pytorch 实现sobel算子的卷积操作详解
Jan 10 Python
python如何通过twisted搭建socket服务
Feb 03 Python
python交互模式基础知识点学习
Jun 18 Python
详解Pycharm与anaconda安装配置指南
Aug 25 Python
Pycharm配置lua编译环境过程图解
Nov 28 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
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
PHP 全角转半角实现代码
2010/05/16 PHP
php foreach 参数强制类型转换的问题
2010/12/10 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
2013/08/08 PHP
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
PHP简单判断手机设备的方法
2016/08/23 PHP
PHP使用Redis实现Session共享的实现示例
2019/05/12 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
关于JS管理作用域的问题
2013/04/10 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
通过url查找a元素并点击
2014/04/09 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
巧用Javascript的逻辑运算符
2016/12/02 Javascript
用原生js做单页应用
2017/01/17 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
2017/01/19 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
详解Python中expandtabs()方法的使用
2015/05/18 Python
python3实现UDP协议的服务器和客户端
2017/06/14 Python
python编程嵌套函数实例代码
2018/02/11 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
Python WSGI的深入理解
2018/08/01 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
一封普通求职者的求职信
2013/11/20 职场文书
幼儿园托班开学寄语
2014/01/18 职场文书
仓管岗位职责范本
2014/02/08 职场文书
环境工程专业自荐信范文
2014/03/18 职场文书
毕业证丢失证明范本
2014/09/20 职场文书
大学生自我推荐信范文
2015/03/24 职场文书
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL