我想使用itertuples()
在数据帧上迭代,这是一种常见的方法:
for row in df.itertuples():
my_funtion(row) # do something with row
但是,现在我希望像这样使用joblib并行地执行循环(这对我来说非常简单):
num_cores = multiprocessing.cpu_count()
processed_list = Parallel(n_jobs=num_cores)(delayed(my_function(row) for row in df.itertuples()))
但是,我得到了以下错误:
File "/home/anaconda3/envs/pytorch/lib/python3.7/site-packages/joblib/parallel.py", line 885, in call iterator = iter(iterable) TypeError: 'function' object is not iterable
拜托,你知道有什么问题吗
在数据帧上迭代不是常见的方法。不要使用itertuples(),而是使用
熊猫会为你做“多重处理”
我认为dask.org满足了我对这篇文章的需求(遵循@monkut的建议)。这是一个例子:
此解决方案将my_函数应用于整个数据帧的每一行,时间为31秒,以timeit衡量。我能够看到多个ZMQbg Jupyter进程(最多16个)在执行期间运行。我猜这意味着它是并行执行的
替代解决方案:
在325秒内产生相同的结果。大约慢10倍。使用此解决方案,我看不到顶部有多个正在运行的进程
相关问题 更多 >
编程相关推荐