python循环定时中断执行某一段程序的实例
Python  /  管理员 发布于 7年前   176
问题说明
最近在写爬虫,由于单个账号访问频率太高会被封,所以需要在爬虫执行一段时间间隔后自己循环切换账号
所以就在想,有没有像单片机那样子设置一个定时中断,再定义一个中断入口,这样子每隔一段时间执行一次中断
当然不能用sleep,这样子整个进程就停在这了,而不是接着爬数据
解决方法
用到threading的Timer,也类似单片机那样子,在中断程序中再重置定时器,设置中断,python实例代码如下
import threadingimport timedef 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 threadingimport timedef 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循环定时中断执行某一段程序的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号