python - 定义适当的进程数

标签 python multithreading performance benchmarking

我有一个处理很多Apache日志的python代码(解压缩,解析,处理数字,正则表达式等)。一个父进程使用多进程池获取文件列表(最多几百万个),然后将文件列表发送给工作人员进行解析。

我想知道,是否有任何指南/基准/建议可以帮助我估计理想的子进程数? 即。每个内核只有一个进程比启动数百个进程好吗?

当前,脚本执行的3/4时间是读取文件并将其解压缩,就资源而言,其CPU已100%加载,内存和I/O正常。因此,我认为通过适当的多处理设置可以完成很多工作。脚本将在不同的机器/操作系统上运行,因此也欢迎特定于操作系统的提示。

另外,使用线程而不是多进程有什么好处吗?

最佳答案

I wonder, if there is any guidelines / benchmarks / advices which can help me to estimate ideal number of child process ?



不。

having one process per core is better than launching few hundreds of them?



您永远无法事先知道。

自由度太多。

您只能通过运行实验凭经验发现它,直到获得所需的性能水平为止。

Also, is there any benefit in using threads rather than multiprocess?



很少。

线程没有太大帮助。当进程(作为一个整体)等待O/S完成I/O请求时,执行I/O的多个线程将被锁定。

您的操作系统在调度进程方面做得非常好。当您进行I/O密集型操作时,您确实需要多个进程。

关于python - 定义适当的进程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6774561/

相关文章:

python - Jupyter 快捷方式不起作用

Python 请求 : having a space in header for posting

python - 获取当天获取的数据的方法

c# - 为什么 8 个 2 个线程的进程比 16 个线程的 1 个进程产生更多的负载?

Mysql 通过 join 提高 count 的性能

python安装模块apiclient

c++ - 使用带参数的类成员函数调用 std::thread 构造函数

c - 重新运行已取消的 pthread

javascript - 使用脚本填写并提交一个reactjs表单

c - 我想知道是否有办法将 OpenMP 中的特定线程分配给特定的 CPU 核心?