在 python 脚本中,我有一个大型数据集,我想对其应用多个函数。这些功能负责创建保存到硬盘驱动器的某些输出。
一些注意事项:
- 功能独立
- 所有函数都不返回任何内容
- 这些功能将花费不同的时间
- 部分功能可能会失效,没关系
我能否以任何方式对其进行多处理,将每个函数和数据集分别发送到一个核心并在那里运行?这样我就不需要第一个功能在第二个功能开始之前完成?它们不需要顺序依赖。 谢谢!
最佳答案
由于您的函数是独立的并且只读取数据,所以只要您的数据在函数执行期间被修改不是问题,那么它们也是线程安全的。
使用 thread pool (click) .您必须为要运行的每个函数创建一个任务。
注意:为了让它在多个内核上运行,您必须使用 Python Multiprocessing .否则所有线程都将在单个内核上运行。发生这种情况是因为 Python 具有全局解释器锁 (GIL)。更多信息Python threads all executing on a single core
或者,您可以使用 DASK ,它会增加数据以运行一些多线程。虽然会增加一些开销,但它可能会更快地满足您的需求。
关于python - 在同一对象上多处理独立函数的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50318674/