0

我想加快我在 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()

非常感谢您对我的帮助;)

4

1 回答 1

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.
于 2016-07-06T09:45:00.663 回答