166

コードのセクションをスピードテストするためにPythonで2回比較する適切な方法は何ですか? API ドキュメントを読んでみました。timedelta のことを理解しているかどうかはわかりません。

これまでのところ、私はこのコードを持っています:

from datetime import datetime

tstart = datetime.now()
print t1

# code to speed test

tend = datetime.now()
print t2
# what am I missing?
# I'd like to print the time diff here
4

16 に答える 16

230

datetime.timedeltaは2つの日時の違いです...つまり、日/秒/マイクロ秒の期間のようなものです

>>> import datetime
>>> a = datetime.datetime.now()
>>> b = datetime.datetime.now()
>>> c = b - a

>>> c
datetime.timedelta(0, 4, 316543)
>>> c.days
0
>>> c.seconds
4
>>> c.microseconds
316543

c.microsecondstimedelta のマイクロ秒部分のみを返すことに注意してください! タイミングのために、常に を使用しますc.total_seconds()

datetime.timedelta を使用してあらゆる種類の計算を行うことができます。たとえば、次のようになります。

>>> c / 10
datetime.timedelta(0, 0, 431654)

ただし、ウォールクロック時間の代わりに CPU 時間を確認する方が便利な場合があります...これはオペレーティング システムに依存しますが... Unix ライクなシステムでは、「time」コマンドを確認してください。

于 2009-04-19T23:31:01.863 に答える
39

代わりに timeit モジュールを使用することをお勧めします。

于 2009-04-20T00:18:10.703 に答える
24

以下を使用することもできます。

import time

start = time.clock()
do_something()
end = time.clock()
print "%.2gs" % (end-start)

または、 python プロファイラーを使用することもできます。

于 2009-04-19T23:38:06.387 に答える
5

次のコードは、時間の詳細を表示する必要があります...

from datetime import datetime

tstart = datetime.now()

# code to speed test

tend = datetime.now()
print tend - tstart
于 2009-04-19T23:17:51.550 に答える
4

違いを簡単に印刷できます。

print tend - tstart
于 2009-04-19T23:16:09.603 に答える
4

私は Python プログラマーではありませんが、Google の使い方は知っています。私が見つけたのは、「-」演算子を使用していることです。コードを完成させるには:

from datetime import datetime

tstart = datetime.now()

# code to speed test

tend = datetime.now()
print tend - tstart

さらに、時間をレンダリングするために strftime() 関数を使用してタイムスパン計算をフォーマットできるように見えますが、満足できます。

于 2009-04-19T23:17:18.870 に答える
3

プロファイルモジュールを調べることができます。スローダウンがどこにあるのかをより正確に読み取ることができ、作業の多くが完全に自動化されます。

于 2009-04-19T23:41:17.423 に答える
2

time.time() / datetime はすばやく使用するのに適していますが、常に 100% 正確であるとは限りません。そのため、私は std libプロファイラー(特にホットショット) の 1 つを使用して何が何であるかを調べるのが好きです。

于 2009-04-19T23:19:26.400 に答える
1

time.time()代わりに、UNIX 時間を高精度で出力するものを使用する必要があります。

次のコードを使用します。

from time import time

tstart = time()
doSomething()
tend = time()
difference = tend - tstart
print("The doSomething function took {} seconds to execute".format(difference))
于 2021-11-04T12:41:01.847 に答える