Python 实现循环中定时中断执行某段程序的实例

沈知远
沈知远
发布时间:2026-10-11| 4人浏览过
原创

本文介绍如何在 Python 循环中定时中断执行某一段程序。通过 threading.Timer 实现定时切换账号,避免使用 sleep 导致进程停止。利用多线程释放 GIL 锁的特性,实现定时切换账号和爬取数据的并行执行。

问题背景

在编写爬虫或自动化脚本时,单个账号访问频率过高会导致被封禁。因此,需要每隔一段时间循环切换账号。然而,如果使用 time.sleep(),整个进程会停止,无法实现定时切换。因此,需要使用 threading 模块的 Timer 实现定时中断。

解决方案

推荐使用 threading.Timer 方法而非 sleep。在中断程序中重置定时器以设置下一次中断。两个线程执行 sleep 时会释放 GIL 锁,被另一线程抢到 GIL 锁可实现定时切换。

方法一:使用 threading.Timer

通过 threading.Timer 实现定时切换账号。每过 3 秒切换一次账号。

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)

运行结果如下:

我在爬数据
我在爬数据
我在爬数据
这是中断,切换账号
我在爬数据
我在爬数据
我在爬数据
这是中断,切换账号
我在爬数据

方法二:使用多线程

通过 threading.Thread 实现定时切换账号和爬取数据的并行执行。

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()

总结

本文介绍了两种在 Python 循环中定时中断执行某一段程序的方法。推荐使用 threading.Timer 方法,因为它更简洁,且不需要手动管理线程。

以上就是python循环定时中断执行某一段程序的实例的详细内容,更多关于Python定时中断的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。