我想知道是否可以为芹菜任务添加“权重”。这是一个具体的例子: 我有一个带有 8Gb VRAM 的 GPU。 我有三项任务:
我启动了一个具有 4 个并发的 celery Worker。
我启动了 5 个任务 1、2 个任务 2 和一个任务 3。
首先,我有[任务1,任务1,任务1,任务1]。然后,当这个任务结束时,我有[task1,task2]和[task2,task2]。终于,当大家都完成后,任务3来了。
可以做这样的事情吗? task3 占用 4 个插槽,task2 占用 2 个插槽?
Celery 不会为您进行此管理,但您可以通过使用共享内存和锁来创建自己的“租赁”。如果您使用的是多处理工作模型,请查看多处理文档,它为您提供了足够的原始工具来自行管理。您可以使用线程或 greenlet 执行相同的操作,但使用不同的并发原语。
几点提示:
CELERYD_PREFETCH_MULTIPLIER
设置为 1
以改善分布。