Currently, every client connection creates a new thread using python's multithreading library. Due to GIL, all the clients are effectively handled on the same CPU core. Note that this is not a major problem, because the subprocess library, which launches the binary file is not constrained to run on the same core, so this load gets split among cores. So only the network I/O is computationally limited to one CPU core. If we upgrade from multithreading to multiprocessing library in python, this issue won't persist.
Currently, every client connection creates a new thread using python's multithreading library. Due to GIL, all the clients are effectively handled on the same CPU core. Note that this is not a major problem, because the subprocess library, which launches the binary file is not constrained to run on the same core, so this load gets split among cores. So only the network I/O is computationally limited to one CPU core. If we upgrade from multithreading to multiprocessing library in python, this issue won't persist.