-1
import time
word = {"success":0, "desire":0, "effort":0, ...}
def cleaner(x):
    dust = ",./<>?;''[]{}\=+_)(*&^%$#@!`~"
    for letter in x:
        if letter in dust:
            x = x[0:x.index(letter)]+x[x.index(letter)+1:]
        else:
            pass
    return x #alhamdlillah it worked 31.07.12
print "input text to analyze"
itext = cleaner(raw_input()).split()
t = time.clock()
for iword in itext:
    if iword in word:
        word[iword] += 1
    else:
        pass
print t
print len(itext)

コードを呼び出すたびに、tが増加します。誰もがこの背後にある根本的な概念/理由を説明できますか?おそらくシステムプロセスの観点から?プログラミングの若者、どうもありがとうございました。

4

5 に答える 5

10

スクリプトを実行するたびに現在の時刻 を印刷しているため

それが時間の仕組みであり、常に進歩しています。

于 2012-08-09T03:09:03.703 に答える
3

forループにかかった時間(最初の呼び出しからtime.clock()終了まで)を測定する場合は、時間のを出力します。

print time.clock() - t
于 2012-08-09T03:10:27.623 に答える
0

time モジュールよりもうまく機能するjackedCodeTimerPyという非常に優れたライブラリがあります。また、いくつかの巧妙なエラー チェック機能も備えているため、試してみることをお勧めします。

jackedCodeTimerPy を使用すると、コードは次のようになります。

# import time
from jackedCodeTimerPY import JackedTiming
JTimer = JackedTiming()

word = {"success":0, "desire":0, "effort":0}
def cleaner(x):
    dust = ",./<>?;''[]{}\=+_)(*&^%$#@!`~"
    for letter in x:
        if letter in dust:
            x = x[0:x.index(letter)]+x[x.index(letter)+1:]
        else:
            pass
    return x #alhamdlillah it worked 31.07.12
print "input text to analyze"
itext = cleaner(raw_input()).split()

# t = time.clock()
JTimer.start('timer_1')
for iword in itext:
    if iword in word:
        word[iword] += 1
    else:
        pass
# print t
JTimer.stop('timer_1')
print JTimer.report()
print len(itext)

それは次のような本当に良いレポートを提供します

label            min          max         mean        total    run count
-------  -----------  -----------  -----------  -----------  -----------
imports  0.00283813   0.00283813   0.00283813   0.00283813             1
loop     5.96046e-06  1.50204e-05  6.71864e-06  0.000335932           50

統計情報とタイマーの実行回数が表示されるのが気に入っています。

使い方は簡単です。for ループにかかるタイムコードを測定したい場合は、次のようにします。

from jackedCodeTimerPY import JackedTiming
JTimer = JackedTiming()

for i in range(50):
  JTimer.start('loop')  # 'loop' is the name of the timer
  doSomethingHere = 'This is really useful!'
  JTimer.stop('loop')
print(JTimer.report())  # prints the timing report

複数のタイマーを同時に実行することもできます。

JTimer.start('first timer')
JTimer.start('second timer')
do_something = 'amazing'
JTimer.stop('first timer')

do_something = 'else'
JTimer.stop('second timer')

print(JTimer.report())  # prints the timing report

レポにはさらに使用例があります。お役に立てれば。

https://github.com/BebeSparkelSparkel/jackedCodeTimerPY

于 2016-10-14T23:24:17.260 に答える
0

time.clock()プロセスが作成されてから経過したCPU 時間を返します。CPU 時間は、CPU がプロセスのコンテキストで費やしたサイクル数に基づいています。これは、プロセスの存続期間中は単調な関数です。つまりtime.clock()、同じ実行で数回呼び出すと、増加する数値のリストが得られます。の 2 つの連続した呼び出しの差はclock()、CPU が 100% で実行されていない (たとえば、I/O を待機していた) か、マルチスレッド プログラムを使用しているかによって異なりますが、実際の経過時間よりも短いか、それ以上になる可能性があります。 CPU 時間の 100% 以上を消費します (たとえば、それぞれ 75% を使用する 2 つのスレッドを持つマルチコア CPU -> 実時間の 150% を取得します)。でも電話したらclock()1 つのプロセスで 1 回、プログラムを再実行すると、新しいプロセスで入力を処理するのに時間がかからない場合、以前よりも低い値が得られる可能性があります。

代わりにすべきことtime.time()は、現在の Unix タイムスタンプを小数 (サブ秒) の精度で返す を使用することです。処理が開始される前に 1 回呼び出し、その後に 1 回呼び出し、2 つの値を減算して、2 つの呼び出しの間に経過した実時間を計算する必要があります。

Windows ではtime.clock()、プロセスが開始されてからの経過時間を返すことに注意してください。これはtime.time()、スクリプトの最初ですぐに を呼び出して、その後の への呼び出しから値を差し引くようなものtime.time()です。

于 2012-08-09T07:03:48.390 に答える