0

私の仕事は、サーバーへの定期的なリクエストを行い、このリクエストの時間をデータベースに書き込むことです。Python 2.7.3、cURL、および pycurl を cURL のラッパーとして使用します。私は次のように要求します:

import pycurl
c = pycurl.Curl()
c.setopt(c.URL, "http://google.com/")
c.setopt(c.VERBOSE, True) # to see request details
c.perform()

しかし、このリクエストの時間をどのように判断できますか?

UPD1

了解しました。2 つのタイムスタンプを取得する必要があり、それらの差分がリクエストの期間になります。しかし、私はいくつかの問題に直面しています:

私が実行すると:

import pycurl, time
c = pycurl.Curl()
c.setopt(c.URL, "http://google.com/")
c.setopt(c.VERBOSE, True) # to see request details
ts = time.clock()
c.perform()
print time.clock() - ts

私は 0.0 o (時々) 0.01 を取得します。ts = time.clock()私はこのコマンドをPythonシェルで実行し、実行後と実行前に時間が残っているため、差分が間違っているprint time.clock() - tsため、差分は約3秒になるはずです。

この出力は、Virtualbox にインストールされた Ubuntu サーバー 12.04 で得られます。Windows 7にインストールされたVirtualbox。Windows 7で以下のコードを試すと、正しい出力が得られます。

ここで別の質問があります - おそらく、time.clock() の代わりに time.time() を使用する必要がありますか?

解決

アイデアはこの投稿から取られました。簡潔に言うと、Windows では time.clock() を、Linux または Unix (Ubuntu など、FreeBSD など、MacOS) では time.time() を使用する必要があります。また、timeit.default_timer() も使用できます。この関数は OS タイプを検出し、time.time() または time.clock() を選択します。したがって、ソリューションのコードは次のとおりです。

import pycurl, timeit
c = pycurl.Curl()
c.setopt(c.URL, "http://google.com/")
c.setopt(c.VERBOSE, True) # to see request details
ts = timeit.default_timer()
c.perform()
print timeit.default_timer() - ts
4

3 に答える 3

2
import pycurl, time
c = pycurl.Curl()
c.setopt(c.URL, "http://google.com/")
c.setopt(c.VERBOSE, True) # to see request details
ts = time.clock()
c.perform()
print time.clock() - ts
于 2012-08-12T17:10:26.060 に答える
0

経過時間の計測に time.clock() を使用しないでください。また、現在は廃止されています。

于 2014-08-25T17:24:09.573 に答える