gpt4 book ai didi

python - Python 的性能问题

转载 作者:太空宇宙 更新时间:2023-11-04 01:00:46 27 4
gpt4 key购买 nike

我在 Python 上遇到性能问题。下面的代码片段有 4 个嵌套循环迭代 OrderedDict,ma​​trix_col 其中有 11000 个项目。另一个迭代遍历 defaultdict,trans 其中也有 ~11000 个项目。执行此过程花费的时间太长。如果有人可以建议如何提高性能,我将不胜感激。

import string
from collections import namedtuple
from collections import defaultdict
from collections import OrderedDict
import time

trans = defaultdict(dict)
...
matrix_col = OrderedDict(sorted(matrix_col.items(), key=lambda t: t[0]))
trans_mat = []
counter = 0

for u1, v1 in matrix_col.items():
print counter, time.ctime()
for u2, v2 in matrix_col.items():
flag = True
for w1 in trans.keys():
for w2, c in trans[u1].items():
if u1 == str(w1) and u2 == str(w2):
trans_mat.append([c])
flag = False
if flag:
trans_mat.append([0])

trans_mat = np.asarray(trans_mat)
trans_mat = np.reshape(trans_mat, (11000, 11000))

这是它目前的表现。它基本上每分钟处理 2 个项目。以这种速度,形成矩阵需要 5 天以上的时间,trans_mat:

0 Tue Oct  6 11:31:18 2015
1 Tue Oct 6 11:31:46 2015
2 Tue Oct 6 11:32:19 2015
3 Tue Oct 6 11:32:52 2015
4 Tue Oct 6 11:33:19 2015
5 Tue Oct 6 11:33:46 2015

最佳答案

您没有利用字典的快速查找功能。在字典中查找键是 O(1)。要解决此问题,您只需要更改算法,这样您就不会遍历所有键来寻找您想要的键..

from itertools import product
trans_mat = [ [trans[u1][u2]] if (u1 in trans) and (u2 in trans[u1]) else [0]
for u1 in matrix_col for u2 in matrix_col ]

关于python - Python 的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32974461/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com