问题验证
- 我已经在文档和discord上寻找答案。
问题
这是我的代码
from llama_index.core.workflow import (
Context,
Event,
StartEvent,
StopEvent,
Workflow,
step,
)
class Event0(Event):
param0: str
class Event1(Event):
param1: str
class Event2(Event):
param2: str
class Event3(Event):
param3: str
class MyWorkflow(Workflow):
@step
async def run_event0(ctx: Context, ev: StartEvent) -> Event1 | Event2 | None:
ctx.session.send_event(Event0(param0="event0"))
ctx.session.send_event(Event1(param1="event1"))
return None
@step
async def run_event1(ctx: Context, ev: Event1) -> Event3:
# do something
return Event3(param3="event3")
@step
async def run_event2(ctx: Context, ev: Event2) -> Event3:
# do something
return Event3(param3="event3")
@step
async def run_event3(ctx: Context, ev: Event3) -> StopEvent | None:
# do something
events = ctx.collect_events(ev, [Event3] * 2)
if events is None:
return None
# do something with events
return StopEvent()
我想要同时运行run_event1和run_event2
3条答案
按热度按时间63lcw9qa1#
要同时运行
run_event1
和run_event2
,可以使用带有num_workers
参数的@step
装饰器。这允许多个步骤示例并行运行。以下是如何修改代码的方法:在这段修改后的代码中,
run_event1
和run_event2
步骤用@step(num_workers=2)
装饰,这使得它们可以并行运行。run_event3
中的ctx.collect_events
方法确保在继续执行 1(https://github.com/run-llama/llama_index/blob/main/docs/docs/examples/workflow/parallel_execution.ipynb)2(https://github.com/run-llama/llama_index/blob/main/docs/docs/module_guides/workflow/index.md) 之前等待Event3
事件。ryhaxcpt2#
你不能,但你可以并发运行,假设你的函数是正确异步的并且使用await,使用dosu正在谈论的num_workers参数。
qmb5sa223#
你不能,但你可以并发运行,假设你的函数是正确异步的并且使用await,使用dosu正在谈论的num_workers参数
它不起作用,我使用了以下代码:
如果它起作用,它应该输出大约5秒钟,但输出了10秒钟。