The GIL affects multi-threading by allowing only one thread to execute Python bytecode at a time. It can be mitigated by using multi-processing or native extensions.
Example using multi-processing:
from multiprocessing import Process
def worker():
print('Worker running')
process = Process(target=worker)
process.start()
process.join()