Celery不使用所有CPU内核(Python 3)

时间:2018-03-19 20:10:24

标签: python multithreading python-3.x celery

我有一个非常短的python脚本:

from celery import Celery
app = Celery('tasks',backend='rpc://guest@localhost//', broker='pyamqp://guest@localhost//')
# CONFIGURE A BACKEND
@app.task
def cal(x, y, n):
    numUse = x**3**n
    denUse = y**3**n

    return numUse//denUse
@app.task
def PRP(n):
    # probable prime test. Use Fermat's Little Theorom
    # choose a non-multiple of n
    a = 2
    val = 2**(n-1) % n
    return val

当我在命令行上运行它时,当我给它命令时它不会使用所有CPU内核。 (例如,PRP.delay(cal(a,b,4))

我知道celery认为它应该在每个不同的CPU上运行多个任务,但是在1上运行我的任务会产生内存错误。我知道大多数时候多线程修复了。如果不可能迫使Celery拆分任务,我该如何自行拆分?

任务管理器说cmd行的CPU使用率约为19.5%。 Celery说它应该在所有4个核心上运行(并发:8(prefork))但它没有。

我使用的是Windows 10。

有什么建议吗?谢谢你能给我的任何帮助!

0 个答案:

没有答案