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之大话题小函数(2)
Oct 10 Python
在ironpython中利用装饰器执行SQL操作的例子
May 02 Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
Python实现Linux中的du命令
Jun 12 Python
13个最常用的Python深度学习库介绍
Oct 28 Python
python中正则表达式的使用方法
Feb 25 Python
使用Python写一个小游戏
Apr 02 Python
python实现AES加密和解密
Mar 27 Python
Python datetime和unix时间戳之间相互转换的讲解
Apr 01 Python
django框架面向对象ORM模型继承用法实例分析
Jul 29 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
Aug 20 Python
 python中的元类metaclass详情
May 30 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的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
php数据类型判断函数有哪些
2013/09/23 PHP
php中的动态调用实例分析
2015/01/07 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
PHP7.0版本备注
2015/07/23 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
2016/01/11 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
JavaScript 格式字符串的应用
2010/03/29 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
AngularJS基础学习笔记之简单介绍
2015/05/10 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
jQuery处理XML文件的几种方法
2016/06/14 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
前端页面文件拖拽上传模块js代码示例
2017/05/19 Javascript
vue 设置路由的登录权限的方法
2018/07/03 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
微信小程序纯文本实现@功能
2020/04/08 Javascript
javascript设计模式 ? 备忘录模式原理与用法实例分析
2020/04/21 Javascript
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
2017/10/07 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
python高阶爬虫实战分析
2018/07/29 Python
python多任务及返回值的处理方法
2019/01/22 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
大学毕业的自我鉴定
2013/10/08 职场文书
教师应聘自荐信范文
2014/03/14 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
加强机关作风建设心得体会
2014/10/22 职场文书
小平小道观后感
2015/06/09 职场文书
护理工作心得体会
2016/01/22 职场文书
毕业生自荐求职信书写的技巧
2019/08/26 职场文书