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实现的二叉树算法和kmp算法实例
Apr 25 Python
Python 基于Twisted框架的文件夹网络传输源码
Aug 28 Python
django基础之数据库操作方法(详解)
May 24 Python
分析Python读取文件时的路径问题
Feb 11 Python
python 列表,数组和矩阵sum的用法及区别介绍
Jun 28 Python
浅谈python连续赋值可能引发的错误
Nov 10 Python
python实现根据文件关键字进行切分为多个文件的示例
Dec 10 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
Apr 29 Python
windows下Python安装、使用教程和Notepad++的使用教程
Oct 06 Python
Matplotlib scatter绘制散点图的方法实现
Jan 02 Python
python模拟预测一下新型冠状病毒肺炎的数据
Feb 01 Python
Selenium 配置启动项参数的方法
Dec 04 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检测useragent版本示例
2014/03/24 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
2017/06/21 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
找到一点可怜的关于dojo资料,谢谢作者!
2006/12/06 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
nodejs命令行参数处理模块commander使用实例
2014/09/17 NodeJs
Javascript aop(面向切面编程)之around(环绕)分析
2015/05/01 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
2016/12/21 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
机器学习python实战之手写数字识别
2017/11/01 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
2018/07/17 Python
python+flask实现API的方法
2018/11/21 Python
Python基本socket通信控制操作示例
2019/01/30 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
2019/10/25 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
python 装饰器重要在哪
2021/02/14 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
美国折衷生活方式品牌:Robert Graham
2018/07/13 全球购物
运动会广播稿80字
2014/01/23 职场文书
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
仓管员岗位责任制
2014/02/19 职场文书
学术会议主持词
2014/03/17 职场文书
小学毕业典礼演讲稿
2014/09/09 职场文书
与美同行演讲稿
2014/09/13 职场文书
2014应届本科生自我评价
2014/09/13 职场文书
答谢词范文
2015/01/05 职场文书
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers