0
time1 = datetime.now();
time1 -= time1;
time2 = datetime.now();
time2 -= time2;

それが、日時をゼロに等しくなるように定義しようとする方法です。それを行う正しい方法は何ですか?

それが私がやろうとしていることです:

import urllib2
from datetime import datetime

time1 = datetime.now();
time1 -= time1;
time2 = datetime.now();
time2 -= time2;
for i in range(0, 5):
    x = datetime.now()
    response = urllib2.urlopen("http://www.google.com")
    time1 += datetime.now() - x
    x = datetime.now()
    response = urllib2.urlopen("http://facebook.com") 
    time2 += datetime.now() - x
print time1
print time2

それは機能しますが、そうするのは間違った方法だと思います。

4

2 に答える 2

3

ドキュメントにあるように、構築方法は次のとおりです。

datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])

datetime.MINYEARです。1これは、年の最小値が であることを意味します1datetimeしたがって、 aが と等しいと定義することはできませんZero。あなたの方法で:

 time1 = datetime.now();
 time1 -= time1;

オブジェクトが非オブジェクトtime1に変更されます。datetime.timedeltadatetime.datetime

>>> time1 = datetime.datetime.now();
>>> time1
datetime.datetime(2013, 6, 9, 11, 13, 3, 57000)
>>> type(time1)
<class 'datetime.datetime'>
>>> time1 -= time1;
>>> time1
datetime.timedelta(0)
>>> type(time1)
<class 'datetime.timedelta'>

timedelta をゼロとして定義するメソッドである @falsetru のおかげで、次のようにする必要があります。

zero = timedelta(0) 
于 2013-06-09T16:07:54.480 に答える
0
from datetime import datetime, timedelta
import urllib2

def benchmark(url, count=5):
    elapsed = timedelta(0)
    for i in range(count):
        time1 = datetime.now()
        u = urllib2.urlopen(url)
        try:
            u.read()
        finally:
            u.close()
        time2 = datetime.now()
        elapsed += time2 - time1
    return elapsed

for url in ("http://www.google.com", "http://facebook.com"):
    print url
    print benchmark(url)
于 2013-06-09T16:24:11.710 に答える