100 percent in the upper part belong to one core. On a dual-core machine, you have up to 200 percent.
One single-threaded process can use only one core, so it is limited to 100 percent. Since your process has multiple threads, nothing prevents it from using both cores.
GIL only prevents pure-Python code from running at the same time. Many library calls (including most I / O materials) issue GILs, so there is no problem. Contrary to most FUDs on the Internet, GIL rarely reduces real-time performance, and if so, it is usually better to solve the problem than using streams.
source
share