I have not looked at this code for > 1 year, so I do not remember exactly what needs to be done. Also, we are stuck on HiGHS 1.4 internally, but or-tools uses HiGHS 1.7. What I am saying is based on 1.4, I have not looked at the most recent version of the code.
I think the function you want to call is
highs::parallel::inititalize_scheduler(num_threads)
defined in HighsParallel.h from the Highs source. I am actually not sure if this is enough, you may also need to set the HiGHS specific parameter for threads (see here:
to set it). I would recommend trying to just call this function first and seeing from the logs/running time if it has any measurable effect. However, if you are doing this from python, it may not be so easy to do.
My understanding, from looking at the HiGHS code, is that there is a globally shared HighsTaskExecutor for all solves/solvers with Highs that is initialized once. If you call solve with Highs and a certain number of threads and this is not set, they set it for you on the first solve, but AFAICT it cannot be changed afterwards. Or maybe there is some issue if you have mulitple solves running concurrently that want a different number of threads each. I do not fully remember the details.