3

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

私はそれがそれを行う良い方法だとは思いませんか?正しい解決策は何ですか?ありがとうございました

4

1 に答える 1

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()
于 2012-08-22T09:56:51.847 に答える