python - Celery - 台球多处理 - 在类中的任务中使用多处理的问题
问题描述
我有一个类似于这个的类:
class A:
...
self.queue = []
def inner_subtask(self, args):
...
with self.lock:
self.queue.append(data)
def run():
...
pool = Pool()
...
f = pool.apply_async(self.inner_subtask, args)
...
f.get() # gets stuck here
我稍微重构了代码,但基本上我正在利用台球多处理在每个任务中启动子进程以加快速度,任务代码如下所示:
@app.task()
def execute():
task = A()
return task.run()
当我在内部进程上执行 get() 时,它会卡住,并且实际上从未在代码中的任何地方移动,我尝试进行研究,但老实说我找不到解决方案。
有比重构代码和从函数启动任务更好的解决方案吗?
解决方案
推荐阅读
- node.js - Node JS Promise.all 异步更新 JSON 对象数组中的属性
- c# - 在 C# 中将剪贴板 PrintScreen 保存到图像文件
- java - 使用 C Sharp 在 Java 中重新创建嵌套静态类
- c# - 带有 CancellationToke 的 AddScoped 依赖项
- ios - 如何通过苹果登录获取其他用户信息
- mysql - 在 MySQL Workbench 中访问 MySQL Kubernetes 部署
- javascript - 无法使用 .trim() 方法删除 Angular 应用程序中组件的 HTML 中的空格
- php - 如何在 PHP 中获取当前 url 并从中获取代码
- spring - 为库包声明 @ComponentScan 时未监听 ApplicationReadyEvent
- twilio - Twilio - 字母数字发件人 ID