| #!/usr/bin/env python |
| import ittapi |
| |
| # pylint: disable=C0411 |
| from argparse import ArgumentParser |
| from vtune_tool import run_vtune_hotspot_collection |
| from workload import workload |
| |
| |
| def run_sample(): |
| # ittapi.event can be used as decorator |
| @ittapi.event |
| def my_function_1(): |
| workload() |
| |
| # the list of arguments can be empty |
| @ittapi.event() |
| def my_function_2(): |
| workload() |
| |
| # or you can specify the name of the event and other parameters |
| @ittapi.event('my function 3') |
| def my_function_3(): |
| workload() |
| |
| @ittapi.event |
| @ittapi.event('my function 4') |
| def my_function_4(): |
| workload() |
| |
| # also, ittapi.event can be used as a context manager |
| with ittapi.event(): |
| workload() |
| # in this form you also can specify the name, the domain and other parameters in the same way |
| with ittapi.event('my event'): |
| workload() |
| |
| my_function_1() |
| my_function_2() |
| my_function_3() |
| my_function_4() |
| |
| # example for overlapped events |
| overlapped_event_1 = ittapi.event('overlapped event 1') |
| overlapped_event_1.begin() |
| workload() |
| overlapped_event_2 = ittapi.event('overlapped event 2') |
| overlapped_event_2.begin() |
| workload() |
| overlapped_event_1.end() |
| workload() |
| overlapped_event_2.end() |
| |
| # example with callable object |
| class CallableClass: |
| def __call__(self, *args, **kwargs): # pylint: disable=W0621 |
| workload() |
| |
| callable_object = ittapi.event(CallableClass()) |
| callable_object() |
| |
| |
| # pylint: disable=R0801 |
| if __name__ == '__main__': |
| parser = ArgumentParser(description='The sample that demonstrates the use of wrappers for the Event API.') |
| parser.add_argument('--run-sample', |
| help='Runs code that uses wrappers for the Event API.', |
| action='store_true') |
| args = parser.parse_args() |
| |
| if args.run_sample: |
| run_sample() |
| else: |
| run_vtune_hotspot_collection(['python', __file__, '--run-sample']) |