我正在用python 3创建一个应用程序,如果wind> 5 bft,它会向您发送一封电子邮件。 我不想每秒发送1000次电子邮件,因为它在我的while循环中。我希望我的程序发送电子邮件,而不是等待大约15分钟,然后再次发送电子邮件。 怎么做?附言我不想将程序延迟15分钟,我只想在15分钟后重复执行某些操作。
答案 0 :(得分:2)
由于您的示例代码当前缩进不正确,所以我不能100%地确定您要问的问题。
我假设您的意思是这样的:
import time
wait = 10
for i in range(wait):
wait -= 1
time.sleep(1)
print(wait)
如果仅删除time.sleep(1),则倒计时将不再发生延迟。这应该起作用:
wait = 10
for i in range(wait):
wait -= 1
print(wait)
[编辑] 啊,非常感谢您的澄清!我相信这就是您要寻找的:
import time
while True: # Here is your while loop!
wait = 10 # Change this to 900 (seconds) to get 15 minutes.
for i in range(wait+1):
print(wait)
wait -= 1
time.sleep(1) # Delay for one second.
print("Send email here!")
[双击编辑] 哦,您希望发送电子邮件不会阻塞程序的主要部分! @ kenny-ostrom所说的在这里是正确的,那么,您想以某种方式使用线程。这是每15分钟或900秒发送一封电子邮件的示例。这种情况发生在后台,而while循环所做的一切 NOT 均被阻止或延迟。这应该是您要寻找的。 c:
import threading, time
def send_my_email():
while True:
time.sleep(3) # Every 15 minutes is 900.
print("Send email now saying: {}".format(email_content))
thread = threading.Thread(target=send_my_email)
thread.start()
# Make a background thread and use the function: send_my_email
while True:
# Do anything here. No delays will happen.
for number in range(10, 0, -1):
print(number)
email_content = number*3 # You can modify email content here.
time.sleep(1)
答案 1 :(得分:1)
使用类似这样的内容:
wait = 10
startTime = time.time()
while wait > 0:
if time.time()-startTime >= 1:
startTime = time.time()
print(wait)
wait-=1
#do other things