gpt4 book ai didi

python - Celery 中的工作进程

转载 作者:行者123 更新时间:2023-11-28 17:56:18 26 4
gpt4 key购买 nike

我有一个 CPU 密集型 Celery 任务,在其中一个任务中,它可以使用 joblib 进一步并行化。默认情况下,使用 celery 启动一个 worker,将创建一个最大并发数等于 CPU/内核数(在我的例子中是 36)的池。

我的问题是,使用这个配置,是否意味着每个工作进程将只有 1 个核心可以使用,并且不会从 joblib 的并行化中获益?或者当 worker 队列中没有其他任务时,它会使用所有核心。

例如:

@app.task  # picked by celery worker process
def a_task():
algo = Algo(n_jobs=5) # further parallelization in the task
....

最佳答案

不,它没有。 - Celery 不能限制工作进程使用单核。操作系统如何分配这 36 个工作进程的负载取决于操作系统,但是是的,你可以说每个进程都有一个内核可以运行。提醒您,在您的情况下,工作进程几乎不占用 CPU。大部分 CPU 时间将由 joblib 使用。

Celery 工作进程执行的任务使用 joblib.Parallel,无论您选择哪种后端(多处理或线程),您最终都会过度使用。 (我认为在这种情况下,将 joblib.Parallel 与 n_jobs=1 一起使用是没有意义的)

这意味着在重负载下,您机器上的每个核心将运行 1 个 Celery 工作进程,以及许多(取决于 j_jobs 值)joblib.Parallel 进程或线程(取决于后端设置)。

关于python - Celery 中的工作进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58111265/

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