Inspired by Alex's time decorator, I decided to use it for better understanding threads and GIL restrictions.
I read that
Python threads are good for concurrent I/O programming. Threads are swapped out of the CPU as soon as they block waiting for input from file, network, etc. This allows other Python threads to use the CPU while others wait. This would allow you to write a multi-threaded web server or web crawler, for example.
However, Python threads are serialized by the GIL when they enter interpreter core. (source)
So here is my little research below.
1. Reading large files.
As I understood, Python threads work good when they don't compete for CPU. I've c...