Since Gurobi version 9.1, the Global Interpreter Lock (GIL) is released during the optimization process which takes place on a lower level. This enables user programs to execute other Python code in a separate Python thread while Gurobi's optimizer is running.
Keep in mind that creating and destroying environments is not thread-safe. When solving models across multiple threads, the recommended approach is to create and delete environments on the main thread, passing each additional thread an initialized environment for its exclusive use.