Shared libraries have two interesting properties: their code can be shared between different processes, and they can be loaded dynamically at run time. It is especially the latter feature that makes them useful: this allows you to load plugins or optional parts of your software while the program is already running.

Shared libraries are the mechanism used by the Python interpreter to load and import extension modules. For example, when you type import numpy in Python, this will load a shared library numpy/core/_multiarray_umath.so with optimized C implementations of many NumPy functions.

Another scientific library that is often linked as a shared library is the BLAS linear algebra library. When a program links to BLAS as a shared library, users can decide which implementation of the BLAS library they want to use. For example, they might want to use an implementation by Intel that is optimized for their specific system.