As the title says, since in Python we have the GIL, which says that only one thread may execute code at any one time, that means that separate threads don't really run in parallel, but rather "interlaced" but still using only a single core of the CPU.
Doesn't that basically defeat the whole concept of threading? Since parallelization using threads is not exactly possible since they dont really run in parallel?
I have found a few answers regarding this but nothing that clearly addressed this, I apologize if this specific facet of the issue has already been answered.
Not quite. The GIL will prevent computationally expensive threads from executing at the same time, and won't give that much of a performance boost.
On the other hand, non-computational tasks (file I/O, for example) can be multithreaded to vastly increase performance. Imagine you have to write 40 files. If the computer can handle writing 20 at once, you can get the writing done much quicker with multithreading than with blocking and writing each file.