.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples\gallery_examples\001_initialize_server_and_deal_with_license.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_gallery_examples_001_initialize_server_and_deal_with_license.py: .. _initialize_server_and_deal_with_license: Initialize PyAnsys Sound and check out the license -------------------------------------------------- This example shows how to initialize PyDPF-Core, load DPF Sound, and check out the required Ansys license (``increment avrxp_snd_level1``) only once. It also shows how to connect to the DPF server, verify where it is located, and get other useful information. This example also demonstrates the use of the LicenseContextManager, a mechanism that lets you check out the license only once for the duration of the session, which greatly improves performance. It shows the execution time of a simple DPF Sound operator when you do not use the LicenseContextManager versus when you do use it. **Prerequisites** Ensure that you have installed PyDPF-Core and DPF Sound according to procedures in the PyDPF-Core documentation: - If you have installed the latest Ansys release, see `Install using pip `_. - If you want to use the DPF standalone version, see `Install DPF Server `_. .. GENERATED FROM PYTHON SOURCE LINES 53-56 Perform required imports ~~~~~~~~~~~~~~~~~~~~~~~~ Perform the required imports: .. GENERATED FROM PYTHON SOURCE LINES 56-67 .. code-block:: Python # Load Ansys and other libraries. import datetime import ansys.dpf.core as dpf from ansys.sound.core.examples_helpers import download_flute_wav from ansys.sound.core.server_helpers import connect_to_or_start_server from ansys.sound.core.signal_utilities import LoadWav .. GENERATED FROM PYTHON SOURCE LINES 71-78 Use a DPF server without a LicenseContextManager ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Initialize a DPF server without using a LicenseContextManager. **Note**: When ``use_license_context=False``, the license is checked out each time you use a DPF Sound operator. .. GENERATED FROM PYTHON SOURCE LINES 78-92 .. code-block:: Python # Connect to a remote server or start a local server without using a LicenseContextManager print("Connecting to the server without using a LicenseContextManager") my_server = connect_to_or_start_server(use_license_context=False) # Check if you are using a local or remote server has_local_server = dpf.server.has_local_server() print(f"Local server: {has_local_server}") # If using a local server, display the path to the server if has_local_server == True: print(f"Local server path (server variable): {my_server.ansys_path}") .. rst-class:: sphx-glr-script-out .. code-block:: none Connecting to the server without using a LicenseContextManager Local server: True Local server path (server variable): None .. GENERATED FROM PYTHON SOURCE LINES 93-94 Display information about the server that you are using. .. GENERATED FROM PYTHON SOURCE LINES 94-96 .. code-block:: Python print(f"Server information: {my_server.info}") .. rst-class:: sphx-glr-script-out .. code-block:: none Server information: {'server_ip': '172.27.38.10', 'server_port': 50052, 'server_process_id': 1652, 'server_version': '9.1', 'os': 'nt', 'path': None} .. GENERATED FROM PYTHON SOURCE LINES 97-99 Execute the PyAnsys Sound ``LoadWav`` operator several times in a row and measure the execution time. .. GENERATED FROM PYTHON SOURCE LINES 99-115 .. code-block:: Python path_flute_wav = download_flute_wav() for i in range(5): now = datetime.datetime.now() wav_loader = LoadWav(path_flute_wav) wav_loader.process() fc_signal = wav_loader.get_output() later = datetime.datetime.now() execution_time = later - now print( f"Elapsed time (loop {i+1}): " f"{execution_time.seconds + execution_time.microseconds/1e6}" f" seconds" ) .. rst-class:: sphx-glr-script-out .. code-block:: none Elapsed time (loop 1): 10.72009 seconds Elapsed time (loop 2): 3.848715 seconds Elapsed time (loop 3): 3.864041 seconds Elapsed time (loop 4): 3.881709 seconds Elapsed time (loop 5): 3.847 seconds .. GENERATED FROM PYTHON SOURCE LINES 116-117 Disconnect (shut down) the server and release the license increment. .. GENERATED FROM PYTHON SOURCE LINES 117-120 .. code-block:: Python print("Disconnecting from the server and releasing the license increment.") my_server = None .. rst-class:: sphx-glr-script-out .. code-block:: none Disconnecting from the server and releasing the license increment. .. GENERATED FROM PYTHON SOURCE LINES 121-128 Use a DPF server with a LicenseContextManager ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Initialize a DPF server using a LicenseContextManager and execute the same code as run previously. **Note**: The LicenseContextManager is a mechanism that checks out a license increment when entering the context and releases it when exiting the context. .. GENERATED FROM PYTHON SOURCE LINES 128-147 .. code-block:: Python # Connect to a remote server or start a local server using a LicenseContextManager print("Connecting to the server using a LicenseContextManager") my_server = connect_to_or_start_server(use_license_context=True) # Execute the same and measure the execution time for i in range(5): now = datetime.datetime.now() wav_loader = LoadWav(path_flute_wav) wav_loader.process() fc_signal = wav_loader.get_output() later = datetime.datetime.now() execution_time = later - now print( f"Elapsed time (loop {i+1}): " f"{execution_time.seconds + execution_time.microseconds / 1e6}" f" seconds" ) .. rst-class:: sphx-glr-script-out .. code-block:: none Connecting to the server using a LicenseContextManager Elapsed time (loop 1): 0.127616 seconds Elapsed time (loop 2): 0.122754 seconds Elapsed time (loop 3): 0.115687 seconds Elapsed time (loop 4): 0.134625 seconds Elapsed time (loop 5): 0.133479 seconds .. GENERATED FROM PYTHON SOURCE LINES 148-151 You can see that the execution time is much faster when you use a LicenseContextManager. This is because when a LicenseContactManager is not used, the license is checked out each time you use a DPF Sound operator. .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 29.813 seconds) .. _sphx_glr_download_examples_gallery_examples_001_initialize_server_and_deal_with_license.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: 001_initialize_server_and_deal_with_license.ipynb <001_initialize_server_and_deal_with_license.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 001_initialize_server_and_deal_with_license.py <001_initialize_server_and_deal_with_license.py>` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_