aiomultiprocess Worker 的简单玩法

aiomultiprocess Worker 是每次都创建一个新的进程,简单场景使用起来比较方便,如果有大量任务以及批量任务并不是很很好,推荐使用Pool

worker 玩法

玩法比较简单,就是创建任务,配置参数

  • 参考代码

任务定义

async def do_task(module_name, task_name):
    module = importlib.import_module(module_name)
    ns = Collection.from_module(module)
    executor = Executor(ns)
    weakref.finalize(executor, lambda: print(f"Executor for {module_name} finalized"))
    weakref.finalize(ns, lambda: print(f"Collection for {module_name} finalized"))
    weakref.finalize(module, lambda: print(f"module for {module_name} finalized"))
    result = executor.execute(task_name)
    return  [{'name':key.name,'value':value} for key,value in result.items()]
async def run_task(module_name, task_name):
    result = await Worker(
        target=do_task,
        args=(module_name, task_name),
        kwargs={}
    )
    return result

说明

以前也说过对象应该是可以pickle 序列化的,不然会有错误提示,worker 有一个好处是每次都是加载新的模块(新进程),对于希望使用隔离环境比较友好

参考资料

https://aiomultiprocess.omnilib.dev/en/latest/guide.html#workers

posted on 2026-09-19 08:00  荣锋亮  阅读(4)  评论(0)    收藏  举报

导航