Guilins
01/28/2025, 7:30 PMMarvin
01/28/2025, 7:30 PM.map()
in Prefect 3.x, you can follow these steps:
1. Define Your Tasks: Create tasks that you want to run concurrently. In Prefect, tasks are defined using the @task
decorator.
2. Use Task Runners: Prefect uses task runners to manage concurrent execution. The default task runner is ThreadPoolTaskRunner
, which runs tasks concurrently within a thread pool. For more advanced parallel execution, you can use DaskTaskRunner
or RayTaskRunner
.
3. Map Tasks: Use the map
method to apply a task across a collection of inputs, enabling concurrent execution. This is similar to Python's built-in map
function but designed for concurrent execution in Prefect.
Here is a basic example:
python
from prefect import flow, task
from prefect.task_runners import ThreadPoolTaskRunner
@task
def my_task(x):
return x * x
@flow(task_runner=ThreadPoolTaskRunner())
def my_flow(data):
results = my_task.map(data)
return results
# Run the flow with a list of inputs
my_flow([1, 2, 3, 4, 5])
In this example, my_task
will be executed concurrently across the list [1, 2, 3, 4, 5]
. You can adjust the concurrency level by configuring the task runner.
For more details, you can refer to the Prefect Task Runners documentation.