# ...
@activity.defn(name="your_activity")
async def your_activity(input: YourParams) -> str:
    return f"{input.greeting}, {input.name}!"
```

## Start an Activity Execution {#activity-execution}

**How to start an Activity Execution using the Temporal Python SDK.**

Calls to spawn [Activity Executions](/activity-execution) are written within a
[Workflow Definition](/workflow-definition). The call to spawn an Activity Execution generates the
[ScheduleActivityTask](/references/commands#scheduleactivitytask) Command. This results in the set of three
[Activity Task](/tasks#activity-task) related Events ([ActivityTaskScheduled](/references/events#activitytaskscheduled),
[ActivityTaskStarted](/references/events#activitytaskstarted), and ActivityTask[Closed])in your Workflow Execution Event
History.

A single instance of the Activities implementation is shared across multiple simultaneous Activity invocations. Activity
implementation code should be _idempotent_.

The values passed to Activities through invocation parameters or returned through a result value are recorded in the
Execution history. The entire Execution history is transferred from the Temporal service to Workflow Workers when a
Workflow state needs to recover. A large Execution history can thus adversely impact the performance of your Workflow.

Therefore, be mindful of the amount of data you transfer through Activity invocation parameters or Return Values.
Otherwise, no additional limitations exist on Activity implementations.

To spawn an Activity Execution, use the
[`execute_activity()`](https://python.temporal.io/temporalio.workflow.html#execute_activity) operation from within your
Workflow Definition.

`execute_activity()` is a shortcut for
[`start_activity()`](https://python.temporal.io/temporalio.workflow.html#start_activity) that waits on its result.

To get just the handle to wait and cancel separately, use `start_activity()`. In most cases, use `execute_activity()`
unless advanced task capabilities are needed.

A single argument to the Activity is positional. Multiple arguments are not supported in the type-safe form of
`start_activity()` or `execute_activity()` and must be supplied by the `args` keyword argument.

  
    View the source code
  {' '}
  in the context of the rest of the application code.

```python
from temporalio import workflow

with workflow.unsafe.imports_passed_through():
    from your_activities_dacx import your_activity
    from your_dataobject_dacx import YourParams