Python每x分钟调用一个函数

Python每x分钟调用一个函数,python,python-3.x,time,Python,Python 3.x,Time,如何在python中创建一个计时器,它每x分钟调用一个函数,而不让整个代码等待?使用如下方法: wait = 10 startTime = time.time() while wait > 0: if time.time()-startTime >= 1: startTime = time.time() print(wait) wait-=1 #do other things import time wait = 10

如何在python中创建一个计时器,它每x分钟调用一个函数,而不让整个代码等待?

使用如下方法:

wait = 10
startTime = time.time()
while wait > 0:
    if time.time()-startTime >= 1:
        startTime = time.time()
        print(wait)
        wait-=1
    #do other things
import time
wait = 10
for i in range(wait):
    wait -= 1
    time.sleep(1)
    print(wait)

我不能100%确定您想问什么,因为您的示例代码当前有不正确的缩进

我想你的意思是这样的:

wait = 10
startTime = time.time()
while wait > 0:
    if time.time()-startTime >= 1:
        startTime = time.time()
        print(wait)
        wait-=1
    #do other things
import time
wait = 10
for i in range(wait):
    wait -= 1
    time.sleep(1)
    print(wait)
如果只删除time.sleep1,倒计时时将不再发生延迟。这应该起作用:

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循环正在做的任何事情都不会被阻塞或延迟。这应该是你要找的。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)

如果你想让任何人理解你的意图,你需要修正缩进。你的示例代码的缩进到处都是。你能不能在不耽误整个计划的情况下再详细说明一下你的意思?你想让你的柜台倒计时还是倒计时?在单独的线程中运行?程序的其余部分是否有可以调用计数器代码的主循环?问题尚不清楚。尝试添加示例输出:\n听起来很简单,但一种方法是围绕多个线程重新设计,其中一个线程可以专用于生成这些计时器事件。不,不会,因为没有时间延迟,所以所有线程都在0.0001秒内计数。。。你自己试试看啊,你在寻找一个倒数计时,每秒钟10,9,8,7,6,5,4,3,2,1,0,然后重复?我已经为你更新了我的答案!c:@依偎也不起作用…@TijmenMeijer我能要求更多的澄清吗?它怎么不起作用?您希望代码执行哪些当前未执行的操作?@依偎我希望我的while循环保持运行,没有任何时间延迟,但在这个循环中,我想设置一个不涉及我的常规循环的计时器。希望你能帮助我。