ユーザーがサイトのリストにアクセスしたかどうかを確認するために、プロキシ ログを調べなければならないという問題に遭遇しました。
訪問したホストをリストと照合して、すべてのプロキシ ログを読み取る小さなスクリプトを作成しました。
for proxyfile in proxyfiles:
for line in proxyfile.readlines():
if line[4] in hosts_list:
print line
hosts_file は大きく、約 10000 のホストについて話しているのですが、検索に予想以上に時間がかかることに気付きました。
私は小さなテストを書きました:
import random, time
test_list = [x for x in range(10000)]
test_dict = dict(zip(test_list, [True for x in range(10000)]))
def test(test_obj):
s_time = time.time()
for i in range(10000):
random.randint(0,10000) in test_obj
d_time = time.time() - s_time
return d_time
print "list:", test(test_list)
print "dict:",test(test_dict)
結果は次のとおりです。
list: 5.58524107933
dict: 0.195574045181
それで、私の質問に。この検索をより便利な方法で実行することは可能ですか? リストに含まれる値ではなくキーを検索したいので、リストの辞書を作成するのはハックのようです。