#!/usr/bin/python
import sched, time
s = sched.scheduler(time.time, time.sleep)
def print_time():
print "From print_time", time.time()
def print_some_times():
print time.time()
s.enter(5, 1, print_time, ())
s.enter(10, 1, print_time, ())
s.run()
print_some_times()
以上代码可用于在5秒10秒内完成print_time()
功能。
我想知道如何在不停止的情况下连续(定期)以5秒的时间段完全执行print_time()
功能。
答案 0 :(得分:2)
即使time.sleep()函数有效,它也不太准确。考虑以下代码
while True:
time.sleep(5)
print_time()
在这种情况下,该函数总是延迟执行5秒。假设print_time()函数花费2秒执行。然后根据这个方法,print_time()函数调用时间为7秒(5 + 2)
但是通过以下代码
可以更准确地获得答案 #!/usr/bin/python
import sched, time
s = sched.scheduler(time.time, time.sleep)
def print_time():
s.enter(5, 1, print_time, ())
print "From print_time", time.time()
def print_some_times():
print time.time()
s.enter(5, 1, print_time, ())
s.run()
print_some_times()
这里发生的是执行print_time()函数时。在print_time()函数的最开头,添加了调度程序队列的另一个条目,在这种情况下,精度非常高
答案 1 :(得分:1)
你可以使用一个睡眠时间为5秒的线程:
import threading, time
def worker():
i = 0
while (True):
print 'do something ... ' + str(time.time())
time.sleep(5)
i += 1
if i > 5: break
t = threading.Thread(target=worker)
print time.time()
t.start()
print time.time()
如果你想“永远”运行它 - 只需删除中断条件......
答案 2 :(得分:0)
我认为你可以使用time.sleep()
传入此函数的参数是你可以暂停程序的确切秒数。
import time
time.sleep(5) ## pauses for 5 seconds.
我不知道我是否正确帮助您,但如果您正在寻找的话,您可以尝试以下方式
import sched, time
s = sched.scheduler(time.time, time.sleep)
def print_time():
var =10
var = "fdfd"
print "From print_time", time.time()
def print_some_times():
print time.time()
s.enter(5, 1, print_time, ())
s.enter(10, 1, print_time, ())
s.run()
while True:
time.sleep(5)
print_some_times()
输出:
1418811191.3
From print_time 1418811196.31
From print_time 1418811201.3
1418811206.31
From print_time 1418811211.34
From print_time 1418811216.32
如果你只想延迟5秒钟来调用函数print_time()
,那么请尝试以下
import sched, time
s = sched.scheduler(time.time, time.sleep)
def print_time():
var =10
var = "fdfd"
print "From print_time", time.time()
def print_some_times():
print time.time()
s.enter(5, 1, print_time, ())
s.enter(10, 1, print_time, ())
s.run()
while True:
time.sleep(5)
print_time()
输出:
From print_time 1418811465.18
From print_time 1418811470.2
From print_time 1418811475.27
From print_time 1418811480.27
From print_time 1418811485.27