模拟时间蟒蛇

liz*_*zie 3 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
Run Code Online (Sandbox Code Playgroud)

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

Inb*_*ose 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
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)

  • 哦 - 你的问题不清楚(或者我读错了)我会用更好的答案更新. (2认同)