我想用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
Run Code Online (Sandbox Code Playgroud)
我不认为这是好方法吗?什么是正确的解决方案?谢谢
运行代码给出:
>>>
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
Run Code Online (Sandbox Code Playgroud)
你需要的是这个:
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
Run Code Online (Sandbox Code Playgroud)
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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2190 次 |
| 最近记录: |