gpt4 book ai didi

python - 具有大量进程但限制 cpus 数量的 Python 中的多处理

转载 作者:太空宇宙 更新时间:2023-11-04 01:27:41 25 4
gpt4 key购买 nike

我有大量数据文件需要通过函数 A 处理。假设有 1000 个文件,每个文件的每个处理时间不到 15 分钟,内存为 6GB。我的电脑有 32GB 和 8 个 CPU,所以为了安全起见,我一次最多可以使用 4 个进程(24GB 内存和 4 个 CPU)。所以我的问题是,我可以在 python 中使用多进程包来创建 4 个进程,并且每个进程连续获取函数 A 来独立处理数据文件,如下图所示。很明显,每个 cpu 必须处理大约。 250个文件,但是1000个文件的文件大小不一样就不一定了。需要注意的是,一旦一个进程完成,无论其他进程是否完成,它都会立即分配一个新作业,即所有四个进程同时完成没有等待时间。函数 A 的返回在这里并不重要。请提供代码!感谢您提出任何建议。

enter image description here

最佳答案

我认为最好的解决方案是使用 multiprocessing.Pool .它使设置进程池(如您指定的数量)变得非常容易,然后为它们提供并行执行的作业。下面是一些基本的示例代码:

import multiprocessing as mp

def handle_file(filename):
# do your processing here

def process_files(list_of_files):
pool = mp.Pool(4) # argument is number of processes, default is the number of CPUs
pool.map(list_of_files) # this returns a list of results, but you can ignore it

这段代码会比必要的慢一点,因为它将函数调用的结果传递回父进程(即使返回值都是None),但我怀疑开销如果您的处理任务需要花费大量时间,则会相对较小。

关于python - 具有大量进程但限制 cpus 数量的 Python 中的多处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16661404/

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