um thread pode executar código Python por vez (mesmo que certas bibliotecas orientadas ao desempenho possam superar essa limitação). Se você deseja que sua aplicação aproveite melhor os recursos computacionais de máquinas multi-core, é aconselhável usar multiprocessingou concurrent.futures.ProcessPoolExecutor.
