python - 在同一对象上多处理独立函数的最有效方法

标签 python pandas multiprocessing

在 python 脚本中,我有一个大型数据集,我想对其应用多个函数。这些功能负责创建保存到硬盘驱动器的某些输出。

一些注意事项:

  1. 功能独立
  2. 所有函数都不返回任何内容
  3. 这些功能将花费不同的时间
  4. 部分功能可能会失效,没关系

我能否以任何方式对其进行多处理,将每个函数和数据集分别发送到一个核心并在那里运行?这样我就不需要第一个功能在第二个功能开始之前完成?它们不需要顺序依赖。 谢谢!

最佳答案

由于您的函数是独立的并且只读取数据,所以只要您的数据在函数执行期间被修改不是问题,那么它们也是线程安全的。

使用 thread pool (click) .您必须为要运行的每个函数创建一个任务。

注意:为了让它在多个内核上运行,您必须使用 Python Multiprocessing .否则所有线程都将在单个内核上运行。发生这种情况是因为 Python 具有全局解释器锁 (GIL)。更多信息Python threads all executing on a single core

或者,您可以使用 DASK ,它会增加数据以运行一些多线程。虽然会增加一些开销,但它可能会更快地满足您的需求。

关于python - 在同一对象上多处理独立函数的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50318674/

相关文章:

python - 魔杖:如何在每帧中组装透明 gif/清晰背景

python - 模块未找到错误: No module named 'PyMySQL'

python - django-haystack elasticsearch多个索引错误结果

python - 如何将数据框拆分为两行,其中两列具有特定值?

python - 泡菜.PicklingError : Can't pickle <function past_match_sim at 0x7fa26e03b7b8>: attribute lookup past_match_sim on __main__ failed

Python 未实现错误 : pool objects cannot be passed between processes

python - 使用用户输入字符串中的不等式

Python - 如果单元格为空则打​​印错误消息

python - 如何在 Dataframe 中添加由 pd.Timestamp 和 float 组成的行

python - 多处理 - 共享数组