我有一个8循环的代码。每两个循环处理一个数据字典,在这个例子中是一个列表。
告诉我如何确保每对循环同时计算,而每对循环同时产生一个结果,这样就不会出现一对先于另一对产生结果的情况。
而第二个时刻。
如何加快代码速度?有一些有效的方法。我尝试了多线程的基础知识,但代码只是变慢了。他很可能做错了什么。
例如,我给出最简单的周期,我的工作周期更难计算,但我不能给你。(保密)。
data1 = [5, 6, 7, 3, 5 , 8, 3]
for i in data1:
if i == 3:
data1[i] = 9
print(data1)
for i in data1:
if i == 2:
data1[i] = 5
print(data1)
data2 = [5, 6, 7, 3, 5 , 8, 3]
for i in data2:
if i == 8:
data1[i] = 9
print(data2)
for i in data1:
if i == 5:
data2[i] = 00
print(data2)
data3 = [5, 6, 7, 3, 5 , 8, 3]
for i in data3:
if i == 5:
data3[i] = 9
print(data3)
for i in data3:
if i == 1:
data3[i] = 5
print(data3)
data4 = [5, 6, 7, 3, 5 , 8, 3]
for i in data4:
if i == 3:
data4[i] = 5
print(data4)
for i in data4:
if i == 2:
data4[i] = 9
print(data4)
提前感谢大家花时间回答我的问题。
注意:在示例中,我使用
numpy.array,但使用纯 Pythonic 列表,一切都会稍微复杂一些。但无论如何,您最好关注类型化数组以加快计算速度,本机 Python 类型非常慢。除非您需要使用无限int-s,否则本机intpython 具有优势。如果列表中有普通数字以及相当简单的分支和计算,那么这可以
Numba毫不费力地提供帮助:结论:
1000 万个元素的列表,普通 python 处理 6 秒,使用装饰器后
numba.njit,相同列表和相同代码的处理时间为 0.2 秒,不费吹灰之力,加速 30 倍。此外,列表的大小越大,加速越明显。但是,如果计算不仅仅是算术并且条件不是那么简单,那么您
Numba可能必须对其进行修改,以便它同意加速您的代码。我自己做奥林匹克编程。曾几何时,我想到可以使用多线程加速代码,但这并没有给出结果。为了加快程序速度,使用了动态编程方法,例如记忆化。此外,您可以使用 PyPy,而不是通常的 Python 3 编译器,它更快。
大约8个周期。我正在使用该模块进行多线程处理
Thread。下面是它的工作原理:一般来说,在我看来,如果两个线程更改一个数组,它们就会相互冲突。因此,如果您需要对数百万个数字执行一些大型运算,那么我建议您使用 C++