How does Python's Global Interpreter Lock (GIL) affect concurrent programming, and what strategies do you use to bypass it for CPU-bound tasks?