我目前有多个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
可以假设当一个任务正在处理时,所有的核心都会自动地被该任务利用。如果第一个任务已经使用了所有的核心,另一个工作人员如何并行执行其任务呢?