For simple things only.
For example, the jit class in Numba is still experimental, and quite limited.
So if you need to write non-trivial class, even if you jit each method,
dropping to Python can be a problem (say with lots of instances.)
I have tried to write an application targeting HPC
and in itself is not very complicated (probably ~2000 lines or in that order.)
But I did things like using the Python language as the metaprogramming language for Numba (basically higher-order function where you jit inside.)
All in all my experience of Numba tells me that if I am designing the same package
now I'd write it in Julia where jit is "first class" and you don't need to
constantly thing about the boundary between Numba and Python.
I have tried to write an application targeting HPC and in itself is not very complicated (probably ~2000 lines or in that order.) But I did things like using the Python language as the metaprogramming language for Numba (basically higher-order function where you jit inside.)
All in all my experience of Numba tells me that if I am designing the same package now I'd write it in Julia where jit is "first class" and you don't need to constantly thing about the boundary between Numba and Python.