模拟时间蟒蛇

时间:2012-08-22 09:53:40

标签: python time

我想在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

我不认为这是好方法吗?什么是正确的解决方案? 谢谢

1 个答案:

答案 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()