gpt4 book ai didi

python - 多处理 : More processes than cpu. 计数

转载 作者:IT老高 更新时间:2023-10-28 21:13:09 25 4
gpt4 key购买 nike

注意:我在 2 天前“涉足”了 multiprocessing 领域。所以我的理解很基础。

我正在编写和申请上传到 amazon s3 存储桶。如果文件较大(100mb),我使用 multiprocessing 模块中的 pool 实现了并行上传。我正在使用带有 core i7 的机器,我的 cpu_count8。我的印象是,如果我这样做 pool = Pool(process = 6) 我使用 6 核心,文件开始分部分上传,前 6 个文件开始上传部分同时开始。要查看当 process 大于 cpu_count 时会发生什么,我输入了 20(暗示我想使用 20 个内核)。令我惊讶的是,程序开始同时上传 20 个部分(我使用了较小的 chunk size 以确保有足够的部分),而不是出现错误 block 。我不明白这种行为。我只有 8 个核心,那么他的程序怎么不能接受 20 的输入呢?当我说 process=6 时,它实际上使用 6 个线程吗?这可能是 20 是有效输入的唯一解释,因为可以有 1000 个线程。谁能给我解释一下。

编辑:

我“借用”了 here 的代码.我只是稍微改变了它,我要求用户选择一个核心用法,而不是将 parallel_processes 设置为 4

最佳答案

您的计算机上同时运行的进程数不受内核数的限制。事实上,您的计算机上可能正在运行数百个程序——每个程序都有自己的进程。为了使其正常工作,操作系统只会暂时将 8 个处理器中的一个分配给每个进程或线程 - 在某些时候它可能会停止并且另一个进程将取而代之。见 What is the difference between concurrent programming and parallel programming?如果您想了解更多信息。

编辑:在您的上传示例中分配更多进程可能有意义,也可能没有意义。从磁盘读取并通过网络发送通常是 python 中的阻塞操作。可以暂停等待其数据 block 被读取或发送的进程,以便另一个进程可以启动其 IO。另一方面,如果进程过多,文件 I/O 或网络 I/O 都会成为瓶颈,并且您的程序会因为进程切换所需的额外开销而变慢。

关于python - 多处理 : More processes than cpu. 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29089282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com