难度
困难
题目
Python的多线程多进程是真的吗,请详细阐述。
在 Python 中,多线程和多进程确实是真实存在的概念,但它们的实现和效果可能会因 Python 解释器的不同而有所差异。特别是在 CPython(最常用的 Python 解释器)中,多线程的行为会受到全局解释器锁(Global Interpreter Lock, GIL)的限制。
python
Copy code
import threading
import time
def worker():
print("Thread starting")
time.sleep(2)
print("Thread ending")
threads = []
for _ in range(5):
t = threading.Thread(target=worker)
threads.append(t)
t.start()
for t in threads:
t.join()
在这个示例中,五个线程会几乎同时启动并等待 2 秒,但由于 GIL,它们不会真正并行执行 CPU 密集型操作。
multiprocessing
模块,用于创建多个进程。不同进程有各自独立的内存空间,不受 GIL 的限制,因此可以实现真正的并行执行。python
Copy code
import multiprocessing
import time
def worker():
print("Process starting")
time.sleep(2)
print("Process ending")
processes = []
for _ in range(5):
p = multiprocessing.Process(target=worker)
processes.append(p)
p.start()
for p in processes:
p.join()
在这个示例中,五个进程会几乎同时启动并等待 2 秒,每个进程都有自己的内存空间,不受 GIL 的限制,因此可以真正并行执行。