我想在python中加快函数的执行时间。我读到一个很好的方法是使用Bisection或Hashtable方法。 你知道怎么用这个功能做到这一点吗?
from time import time
import csv
f = open('file.csv')
reader = csv.reader(f, delimiter=';')
def old(abi):
first = True
for row in reader:
if first:
first = False
first_row = row
else:
if row[0] == abi:
res = row
res = dict(zip(first_row, res))
break
@timing
def test2():
for x in xrange(3000, 800000):
old(str(x))
test2()
非常感谢你的帮助;)
答案 0 :(得分:0)
我怀疑你的问题是I / O(而不是CPU)绑定。
如果它确实是CPU绑定的,那么有一件事可以尝试提高性能:用生成器替换forloop。这样,迭代就会发生在CPython的C端。
def old(path, abi):
with open(path) as handle:
r = csv.reader(handle, delimiter=";")
header = next(r)
try:
result = next(row for row in r if row[0] == abi)
return dict(zip(header, result))
except StopIterations:
return None # Not found.