如何提高python循环的速度?

时间:2017-11-06 11:58:06

标签: python

我需要根据不同场景分析大型数据帧,并且我正在寻找一种方法(如果可能的话)(轻松)加快流程。

基本上我的代码就像(真的,非常简化);

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))

dict_x = {}
for x in range(0, 10):
    dict_y = {}
    for y in range(0, 10):
        for i in range(0, len(df)):
            df.loc[i, 'E'] = ((df.loc[i, 'A'] * df.loc[i, 'B']) * x) + y
        dict_y[y] = df
    dict_x[x] = dict_y

由于场景的数量,需要很长时间才能运行。每个场景都独立于其他场景。有没有办法提高速度?就像启用python一次使用多个核心/分析多个场景一样,或者其他什么

我看了一下多处理模块,但我无法理解如何应用它。我对Python很陌生,所以我可能错过了一些基本的东西。

****编辑**:更新了代码示例,希望更容易理解我想要实现的目标。由于系统需要传感器和计算的数量,以及一个月内每分钟的数据,实际代码要长得多。

1 个答案:

答案 0 :(得分:0)

您可以使用两件事:

开头,矢量化:使用numpy库进行循环乘法/加法和其他数学运算。这会将你的时间缩短1000倍(可能会大于)

您可以处理的其他区域是数据的并行处理,这些处理彼此独立。请参阅多线程和多处理的文档。