我想在Python中模拟时间。我想每秒都应用“my_fct”,但我不知道“my_fct”需要多长时间才能运行,所以我无法使用睡眠。 我做的是这个:
past_time = datetime.datetime.utcnow()
present_time = datetime.datetime.utcnow()
for i in range(10):
while( (present_time - past_time).total_seconds() < 1):
present_time = datetime.datetime.utcnow()
my_fct(......)
past_time = present_time
我不认为这是好方法吗?什么是正确的解决方案? 谢谢
答案 0 :(得分:6)
运行代码会给出:
>>>
Traceback (most recent call last):
File "C:\python\tester.py", line 6, in <module>
while((present_time - past_time) < 1):
TypeError: can't compare datetime.timedelta to int
你需要的是:
import datetime
past_time = datetime.datetime.utcnow()
present_time = datetime.datetime.utcnow()
for i in range(10):
while((present_time - past_time).seconds < 1):
present_time = datetime.datetime.utcnow()
my_fct(......)
past_time = present_time
time-time给出timedelta值。你需要这个值的秒数。然后与你的int进行比较。
编辑但是,我现在意识到这不是您正在寻找的解决方案。
这是一种使用线程的方法(一种非常简单的方法 - 根据my_fct()
的内容而容易出现问题。)
import time
from threading import Thread
for i in range(10):
time.sleep(1)
t = Thread(target=my_fnc, args=(......))
t.start()