我有以下Python代码:如何减少时间在python循环?
H1 = [[0.04,0.03,0.01,0.002],[0.02,0.04,0.001,0.5]]
H2 = [[0.06,0.02,0.02,0.004],[0.8,0.09,0.6,0.1]]
D1 = [0.01,0.02,0.1,0.01]
D2 = [0.1,0.3,0.01,0.4]
Tp = np.sum(D1)
Tn = np.sum(D2)
T = []
append2 = T.append
E = []
append3 = E.append
for h1,h2 in itertools.izip(H1,H2)
Err = []
append1 = Err.append
for v in h1:
L1 = [1 if i>=v else 0 for i in h1]
L2 = [1 if i>=v else 0 for i in h2]
Sp = np.dot(D1,L1)
Sn = np.dot(D2,L2)
err = min(Sp+Tn-Sn, Sn+Tp-Sp)
append1(err)
b = np.argmin(Err)
append2(h1[b])
append3(Err[b])
这仅仅是一个示例代码。我需要运行内部循环近20000次(这里只运行两次)。但内循环花费很多时间使其不实用。 在行剖析器中,它显示行Sp = np.dot(D1,L1)
,Sn = np.dot(D2,L2)
和b = np.argmin(Err)
是最耗时的。 如何缩短上述代码所花费的时间。
任何帮助将不胜感激。
谢谢!
什么是您的硬件?根据计算机的不同,可以使用多处理(因为代码可并行化),甚至可以使用CUDA进行GPU计算。 – lucasg
@georgesl:嗨,我已经在使用多处理。我需要为5个不同的H1和H2运行以上代码。我的H1再次包含大约20,000个列表,即外部for循环运行20,000次。 – user2766019
使用CUDA,它死了很快*我认为它有那些python绑定* –