python-rq worker是否支持多处理模块?

时间:2020-02-28 17:41:17

标签: python-3.x multiprocessing python-rq

我目前有多个python-rq worker从队列中并行执行作业。每个作业还利用python多处理模块。

作业执行代码就是这样:

from redis import Redis
from rq import Queue
q = Queue('calculate', connection=Redis())

job = q.enqueue(calculateJob, someArgs)

computeJob的定义如下:

import multiprocessing as mp
from functools import partial

def calculateJob (someArgs):
 pool = mp.Pool()
 result = partial(someFunc, someArgs=someArgs)

def someFunc(someArgs):
 //do something
 return output

因此,大概在处理作业时,该作业会自动利用所有内核。如果第一个作业已经利用了所有核心,那么另一个并行处理另一个作业的工作人员将如何执行其工作?

1 个答案:

答案 0 :(得分:0)

这取决于您的系统如何处理进程。就像打开视频 + 5 个以上的进程不会完全冻结您的 6 核计算机一样。每个工人都是一个新的进程。 (真的是一个进程的分支)。您可以将每个作业放在一个队列中,让 rq 通过产生多个工作器来处理多处理,而不是在作业内部进行多处理。