blob: fc56aab8c2d46812c05a51d5f7faf367c2b49ae6 [file] [log] [blame]
#!/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.task can be used as decorator
@ittapi.task
def my_function_1():
workload()
# the list of arguments can be empty
@ittapi.task()
def my_function_2():
workload()
# or you can specify the name of the task and other parameters
@ittapi.task('my function 3')
def my_function_3():
workload()
# like domain
@ittapi.task(domain='my domain')
def my_function_4():
workload()
@ittapi.task
@ittapi.task('my function 5')
def my_function_5():
workload()
# also, ittapi.task can be used as a context manager
with ittapi.task():
workload()
# in this form you also can specify the name, the domain and other parameters in the same way
with ittapi.task('my task', 'my domain'):
workload()
my_function_1()
my_function_2()
my_function_3()
my_function_4()
my_function_5()
# example for overlapped tasks
overlapped_task_1 = ittapi.task('overlapped task 1', overlapped=True)
overlapped_task_1.begin()
workload()
overlapped_task_2 = ittapi.task('overlapped task 2', overlapped=True)
overlapped_task_2.begin()
workload()
overlapped_task_1.end()
workload()
overlapped_task_2.end()
# example with callable object
class CallableClass:
def __call__(self, *args, **kwargs): # pylint: disable=W0621
workload()
callable_object = ittapi.task(CallableClass())
callable_object()
# pylint: disable=R0801
if __name__ == '__main__':
parser = ArgumentParser(description='The sample that demonstrates the use of wrappers for the Task API.')
parser.add_argument('--run-sample',
help='Runs code that uses wrappers for the Task API.',
action='store_true')
args = parser.parse_args()
if args.run_sample:
run_sample()
else:
run_vtune_hotspot_collection(['python', __file__, '--run-sample'])