r""" Interface for recording a time range by user defined. Args: name (str): Name of the record event. event_type (TracerEventType, optional): Optional, default value is `TracerEventType.PythonUserDefined`. It is reserved for internal purpose, and it
| 46 | |
| 47 | |
| 48 | class RecordEvent(ContextDecorator): |
| 49 | r""" |
| 50 | Interface for recording a time range by user defined. |
| 51 | |
| 52 | Args: |
| 53 | name (str): Name of the record event. |
| 54 | event_type (TracerEventType, optional): Optional, default value is |
| 55 | `TracerEventType.PythonUserDefined`. It is reserved for internal |
| 56 | purpose, and it is better not to specify this parameter. |
| 57 | |
| 58 | Examples: |
| 59 | .. code-block:: pycon |
| 60 | :name: code-example1 |
| 61 | |
| 62 | >>> import paddle |
| 63 | >>> import paddle.profiler as profiler |
| 64 | >>> # method1: using context manager |
| 65 | >>> paddle.seed(2023) |
| 66 | >>> with profiler.RecordEvent("record_add"): |
| 67 | ... data1 = paddle.randn(shape=[3]) |
| 68 | ... data2 = paddle.randn(shape=[3]) |
| 69 | ... result = data1 + data2 |
| 70 | >>> # method2: call begin() and end() |
| 71 | >>> record_event = profiler.RecordEvent("record_add") |
| 72 | >>> record_event.begin() |
| 73 | >>> data1 = paddle.randn(shape=[3]) |
| 74 | >>> data2 = paddle.randn(shape=[3]) |
| 75 | >>> result = data1 + data2 |
| 76 | >>> record_event.end() |
| 77 | |
| 78 | Note: |
| 79 | RecordEvent will take effect only when :ref:`Profiler <api_paddle_profiler_Profiler>` is on and at the state of `RECORD`. |
| 80 | """ |
| 81 | |
| 82 | name: str |
| 83 | event_type: TracerEventType |
| 84 | event: _RecordEvent | None |
| 85 | |
| 86 | def __init__( |
| 87 | self, |
| 88 | name: str, |
| 89 | event_type: TracerEventType = TracerEventType.PythonUserDefined, |
| 90 | ) -> None: |
| 91 | self.name = name |
| 92 | self.event_type = event_type |
| 93 | self.event = None |
| 94 | |
| 95 | def __enter__(self) -> Self: |
| 96 | self.begin() |
| 97 | return self |
| 98 | |
| 99 | def __exit__( |
| 100 | self, |
| 101 | exc_type: type[BaseException] | None, |
| 102 | exc_value: BaseException | None, |
| 103 | traceback: types.TracebackType | None, |
| 104 | ) -> None: |
| 105 | self.end() |