gpt4 book ai didi

python - 使用 celery 在简单任务中表现不佳

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

在执行以下用例时,我目前的性能不佳:

我有两个文件 - tasks.py

# tasks.py
from celery import Celery

app = Celery('tasks', broker='pyamqp://guest@localhost//', backend='rpc://',worker_prefetch_multiplier=1)

@app.task
def task(array_of_elements):
return [x ** 2 for x in array_of_elements]

并运行.py

# run.py
from celery import group
from itertools import chain, repeat
from tasks import task
import time

def grouper(n, iterable, padvalue=None):
return zip(*[chain(iterable, repeat(padvalue, n-1))]*n)

def fun1(x):
return x ** 2

if __name__ == '__main__':
start = time.time()
items = [list(x) for x in grouper(10000, range(10000))]
x = group([task.s(item) for item in items])
r = x.apply_async()
d = r.get()
end = time.time()
print(f'>celery: {end-start} seconds')

start = time.time()
res = [fun1(x) for x in range(10000)]
end = time.time()
print(f'>normal: {end-start} seconds')

当我尝试运行 celery 时: celery -A tasks worker --loglevel=info

并尝试运行:

python run.py

这是我得到的输出:

>celery: 0.19174742698669434 seconds
>normal: 0.004475116729736328 seconds

我不知道为什么 celery 的表现更差?

我试图了解如何使用 celery 实现 map-reduce 范式,例如将一个巨大的数组拆分成较小的 block ,进行一些处理并返回结果

我是否遗漏了一些关键配置?

最佳答案

Map-reduce 范式不应该更快,但可以更好地缩放。

与实现相同计算的本地运行作业相比,MR 作业始终存在开销:进程调度、通信、混洗等。

您的基准测试不相关,因为 MR 和本地运行都是两种方法,具体取决于数据集大小。在某些时候,您会从本地运行方法切换到 MR 方法,因为您的数据集对于一个节点来说太大了。

关于python - 使用 celery 在简单任务中表现不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49532169/

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