首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫,Concurrent.Futures和吉尔

熊猫,Concurrent.Futures和吉尔
EN

Stack Overflow用户
提问于 2016-09-15 15:37:28
回答 1查看 2.8K关注 0票数 4

我正在使用Pandas0.18/Python3.5在英特尔i3 (四个核)上编写代码。

我读过这样的文章:https://www.continuum.io/content/pandas-releasing-gil

我还做了一些工作,即IO绑定(将CSV文件解析为dataframes)。我需要做大量的计算,主要是将数据乘以。

我的代码目前是使用concurrent.futures ThreadPoolExecutor并行的。

我的问题是:

  • 一般来说,我应该使用线程并行运行熊猫作业,还是熊猫可以有效地利用所有核心,而不需要我明确告诉它呢?(在这种情况下,我将依次执行我的作业)。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-15 15:48:44

我只能从阅读文档中看出,熊猫只需为某些操作释放GIL

我们正在发布一些cython操作的全局解释器锁(GIL)。这将允许其他线程在计算期间同时运行,这可能允许多线程提高性能。值得注意的是,groupbynsmallestvalue_counts和一些索引操作都从中受益。

这意味着其他线程可以由Python解释器执行,而由熊猫进行的计算则继续进行。这并不意味着熊猫会自动在多个线程上缩放计算结果。他们在文档中也提到了这一点:

GIL的发布可能有利于使用线程进行用户交互(例如QT)或执行多线程计算的应用程序。

为了获得并行化的好处,您需要在自己的代码中实际创建和执行多个线程。因此,如果要在应用程序中获得并行执行,则应该继续使用ThreadPoolExecutor

请记住,熊猫只为某些操作发布GIL,所以如果您不调用任何实际发布它的方法,那么您可能无法通过多线程获得性能改进。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39515123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档