首页 > 编程知识 正文

利用time.sleep(2)实现Python程序的延时操作

时间:2024-04-27 11:09:20 阅读:335260 作者:AJRF

一、背景介绍

在编写Python程序时,有时需要让程序延时一段时间后再继续执行下去。例如,需要在发送邮件后等待一段时间再执行下一步操作,或者需要在爬虫程序中等待一段时间后再发送请求,避免因频繁请求而被封IP。这时候,就需要使用time模块中的sleep()方法。

二、time.sleep()方法详解

1. 方法说明

time.sleep()方法可以使程序进入阻塞状态,暂停执行一段时间,然后再继续执行下面的代码。其语法如下:

import time
time.sleep(seconds)

其中,seconds是延时的秒数,可以是浮点数,表示等待的时间。

2. 实例演示

下面通过一个实例演示time.sleep()方法的用法,让程序每隔1秒输出一次数字:

import time

num = 0
while num < 10:
    num += 1
    print(num)
    time.sleep(1)

上述代码中,程序先初始化num为0,然后通过while循环每次加1,最终在输出数字后使用time.sleep()方法使程序延时1秒。运行结果为:

1
2
3
4
5
6
7
8
9
10

三、应用场景举例

1. 爬虫程序中的延时操作

在爬虫程序中,频繁请求目标网站可能会被封IP。为了避免这种情况,可以在每次请求之间加入延时操作。

import requests
import time

url = 'https://www.baidu.com'
header = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=header)
time.sleep(2)

上述代码中,使用requests库向百度网站发送请求,在请求后使用time.sleep()方法使程序延时2秒。这样就避免了过于频繁的请求而被封IP。

2. 发送邮件中的延时操作

在发送邮件时,可能需要等待一段时间后再执行下一步操作,例如发送多封邮件时需要在发送完一封邮件后等待一段时间再发送下一封。

import smtplib
import time

from email.mime.text import MIMEText
from email.header import Header

# 邮箱服务器设置
mail_host = 'smtp.163.com'
mail_user = 'sender@163.com'
mail_pass = 'password'

# 发送邮件
sender = 'sender@163.com'
receivers = ['receiver@163.com']

message = MIMEText('Python发送邮件测试', 'plain', 'utf-8')
message['From'] = Header('发送者', 'utf-8')
message['To'] = Header('接收者', 'utf-8')
message['Subject'] = Header('Python SMTP测试', 'utf-8')

try:
    smtpObj = smtplib.SMTP()
    smtpObj.connect(mail_host, 25)
    smtpObj.login(mail_user,mail_pass)
    smtpObj.sendmail(sender, receivers, message.as_string())
    print('邮件发送成功')
    time.sleep(60)  # 等待60秒
except smtplib.SMTPException:
    print('邮件发送失败')

上述代码中,通过smtplib库发送邮件,并在发送后使用time.sleep()方法延时60秒。这样就可以等待邮件发送完毕再进行下一步操作。

四、总结

通过上述实例,我们可以使用time.sleep()方法实现Python程序的延时操作,避免过于频繁的请求或操作。在实际编写程序时,需要根据具体情况决定使用的延时时间,合理设置延时时间可以提高程序的可靠性和稳定性。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。