如何评估矢量化任务的进度(在python中使用pandas)

6uxekuva  于 2023-05-15  发布在  Python
关注(0)|答案(1)|浏览(140)

任务的矢量化加快了执行速度,但我无法找到如何测量矢量化任务的进度(如果任务需要很长时间才能完成)。我已经看到tqdm可以完成这项工作,但我想知道是否有可能以更简单的方式完成这项工作。
pandas Dataframe 示例(假设索引为[0...n],每1000行输出一条打印输出消息):

for idx in df.index:
    df.loc[idx, 'B'] = a_function(df.loc[idx, 'A'])
    if (idx % 1000) == 0:
        print(idx)

这将显示进度,但如果df有几百万行,并且a_function()不是普通的,则速度会非常慢。
另一种方法是将操作向量化:

df['B'] = df['A'].apply(lambda x: a_funcion(x))

这可能会运行得更快,但它没有提供任何有关进度的提示。如何获得矢量化任务的状态信息?

jpfvwuh4

jpfvwuh41#

tqdm现在通过progress_apply方法支持主要的通用pandas.core结构:

from tqdm import tqdm

tqdm.pandas()
df = pd.DataFrame(np.random.randint(0, 100, 3000_000), columns=['A'])
df['B'] = df['A'].progress_apply(lambda x: x**2)

它不需要print语句就可以显示进度(尽管它可能不适合所有情况)。

相关问题