Python - 运行多个使用多处理的 python 脚本有时会影响性能和错误

Posted

技术标签:

【中文标题】Python - 运行多个使用多处理的 python 脚本有时会影响性能和错误【英文标题】:Python - Running multiple python scripts that uses multiprocessing affects performance and errors out sometimes 【发布时间】:2021-01-24 22:20:53 【问题描述】:

我有一个 PYTHON 脚本,它使用多处理将数据从 DB2/Oracle 数据库提取到 CSV 并摄取到 Snowflake。当我运行这个脚本时,性能很好(在 75 秒内提取大数据集的源表)。所以我复制了这个python脚本并更改了输入参数(基本上不同的源表)。当我一起运行所有这些 python 脚本时,性能会受到影响(对于同一个表,它会在 100 秒内提取),有时我会看到错误“无法分配内存”。

我正在使用 Jupyter Nootebook,所有这些不同的 python 脚本都将不同的源表提取到 CSV 文件并将其保存在同一服务器位置。

我也在自己检查。但我们将不胜感激。

谢谢 巴拉

【问题讨论】:

【参考方案1】:

如果您运行多个使用multiprocessing 的脚本并同时写入同一个磁盘,您最终会在某个地方遇到瓶颈。

可能是对数据库的并发访问、磁盘的写入速度、使用的内存量或 CPU 周期。这里的具体问题是什么,如果不进行测量就无法说出。

但是例如与当前的 CPU 速度相比,向 HDD 写入内容非常慢。

此外,当您运行多个使用 multiprocessing 的脚本时,您的工作进程可能比 CPU 的内核数量多。在这种情况下,会有一些工作进程一直在等待 CPU 时间。

【讨论】:

以上是关于Python - 运行多个使用多处理的 python 脚本有时会影响性能和错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用多处理在Python中运行多个异步进程?

使用多个参数运行相同函数的 Python 多处理

python 多处理示例 itertools 多个列表

python标准库学习thread,threading多线程的介绍和使用

Python中的多处理:处理多个工作线程

Python 中的多线程还是串行处理?