我有一个名为
df_fruits
的水果数据框。index name
1 apple
2 banana
3 strawberry
同时,它的市场价格以以下方式存储在MySQL数据库中:
category market price
apple A 1.0
apple B 1.5
banana A 1.2
banana A 3.0
apple C 1.8
strawberry B 2.7
...
在 df_fruits
迭代期间,我希望进行一些处理。
下面的代码是非并行版本。
def process(fruit):
# make DB connection
# fetch the prices of fruit from database
# do some processing with fetched data, which takes a long time
# insert the result into DB
# close DB connection
for idx, f in df_fruits.iterrows():
process(f)
我想做的是对df_fruits
中的每一行进行并行的process
操作,因为df_fruits
有很多行,市场价格表的大小也相当大(获取数据需要很长时间)。
正如您所看到的,行之间的执行顺序不重要,并且没有共享数据。
在df_fruits
的迭代中,我不确定在哪里定位`pool.map()`。我是否需要在并行执行之前将行拆分并将块分配给每个进程?(如果是这样,那么比其他进程先完成工作的进程将处于空闲状态?)
我已经研究了并行处理包“pandarallel”,但我不能使用它(我的操作系统是Windows)。
任何帮助将不胜感激。