Python-rq工作者支持多进程模块吗?

4

我目前有多个python-rq工作进程并行从队列中执行任务。每个任务还利用了Python的multiprocessing模块。

任务执行代码如下:

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

job = q.enqueue(calculateJob, someArgs)

calculateJob的定义如下:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接