天道酬勤,学无止境

embarrassingly-parallel

并行化熊猫应用(Parallelize pandas apply)

问题 Pandas 的新手,我已经想并行化一个按行应用的操作。 到目前为止,我发现在 pandas groupby 之后 Parallelize apply 但是,这似乎只适用于分组数据帧。 我的用例不同:我有一个假期列表,对于我当前的行/日期,我想找到这一天之前和之后到下一个假期的天数。 这是我通过apply调用的函数: def get_nearest_holiday(x, pivot): nearestHoliday = min(x, key=lambda x: abs(x- pivot)) difference = abs(nearesHoliday - pivot) return difference / np.timedelta64(1, 'D') 我怎样才能加快速度? 编辑 我对 python 池进行了一些试验 - 但它既不是很好的代码,也没有得到我的计算结果。 回答1 我认为沿着并行尝试的路线走下去可能会使事情变得复杂。 我还没有在大样本上尝试过这种方法,所以你的里程可能会有所不同,但它应该给你一个想法...... 让我们从一些日期开始...... import pandas as pd dates = pd.to_datetime(['2016-01-03', '2016-09-09', '2016-12-12', '2016-03-03'])

2021-10-08 05:58:15    分类:技术分享    python   pandas   parallel-processing   apply   embarrassingly-parallel

Parallelize pandas apply

New to pandas, I already want to parallelize a row-wise apply operation. So far I found Parallelize apply after pandas groupby However, that only seems to work for grouped data frames. My use case is different: I have a list of holidays and for my current row/date want to find the no-of-days before and after this day to the next holiday. This is the function I call via apply: def get_nearest_holiday(x, pivot): nearestHoliday = min(x, key=lambda x: abs(x- pivot)) difference = abs(nearesHoliday - pivot) return difference / np.timedelta64(1, 'D') How can I speed it up? edit I experimented a bit

2021-06-14 21:53:52    分类:问答    python   pandas   parallel-processing   apply   embarrassingly-parallel

使用Python多处理解决尴尬的并行问题(Solving embarassingly parallel problems using Python multiprocessing)

问题 如何使用多重处理来解决令人尴尬的并行问题? 令人尴尬的并行问题通常包括三个基本部分: 读取输入数据(从文件,数据库,tcp连接等)。 在输入数据上运行计算,其中每个计算独立于任何其他计算。 将计算结果写入文件,数据库,TCP连接等。 我们可以在两个维度上并行化程序: 第2部分可以在多个内核上运行,因为每个计算都是独立的。 处理顺序无关紧要。 每个部分可以独立运行。 第1部分可以将数据放置在输入队列中,第2部分可以将数据从输入队列中拉出并将结果放到输出队列中,而第3部分可以将结果从输出队列中拉出并写出。 这似乎是并发编程中最基本的模式,但是我仍然在尝试解决它方面迷失了方向,所以让我们写一个规范的示例来说明如何使用多重处理来完成。 这是示例问题:给定一个以整数行作为输入的CSV文件,计算其总和。 将问题分为三个部分,这些部分可以并行运行: 将输入文件处理为原始数据(整数列表/可迭代数) 并行计算数据总和输出总和 下面是传统的单进程绑定Python程序,它解决了这三个任务: #!/usr/bin/env python # -*- coding: UTF-8 -*- # basicsums.py """A program that reads integer values from a CSV file and writes out their sums to another CSV

2021-04-10 03:28:13    分类:技术分享    python   concurrency   multiprocessing   embarrassingly-parallel

Solving embarassingly parallel problems using Python multiprocessing

How does one use multiprocessing to tackle embarrassingly parallel problems? Embarassingly parallel problems typically consist of three basic parts: Read input data (from a file, database, tcp connection, etc.). Run calculations on the input data, where each calculation is independent of any other calculation. Write results of calculations (to a file, database, tcp connection, etc.). We can parallelize the program in two dimensions: Part 2 can run on multiple cores, since each calculation is independent; order of processing doesn't matter. Each part can run independently. Part 1 can place data

2021-03-25 03:52:08    分类:问答    python   concurrency   multiprocessing   embarrassingly-parallel