1

Python 3では、たとえば10秒間関数を繰り返すにはどうすればよいですか。この場合、関数はラズベリーパイの出力を特定の時間ハイとローに切り替えています。これは、これが発生する前に指定された時間だけ発生する必要があります。

4

2 に答える 2

0

期間中、関数を継続的に呼び出す必要がない場合は、次のようにすることができます。

import time
f()
time.sleep(sec)
g()

これは、 ;fによって元に戻される結果を引き起こす関数です。秒が経過するまで呼び出されないgため、の結果は必要な限り有効になります。gsecf

編集:f重要な時間がかかり、これをより正確にする必要がある場合は、次のことを試してください。

import time
before_f = time.clock()
f()
after_f = time.clock()
time.sleep(sec-(after_f-before_f))
g()
于 2013-02-20T07:52:08.777 に答える
0

試す:

def run_wrapper(sec):
    starttime = datetime.datetime.now()
    endtime = None
    while True:
        f()
        endtime = datetime.datetime.now()
        if (endtime - starttime).total_seconds() >= sec:
            break
    print('Ran for %s seconds' % (endtime - starttime).total_seconds())

f呼び出したい関数はどこにありますか。これは正確に sec数秒間実行されないことに注意してください。sec秒が経過していない場合、関数を呼び出します。たとえば、関数の所要時間が 30 秒で、31 秒を指定した場合、関数は 2 回呼び出され、合計 60 秒になります。

于 2013-02-20T07:46:42.127 に答える