1. Python 中的 GIL (Global Interpreter Lock) 是什么?
解答:
Python 的 GIL 是全局解釋器鎖,限制了在 CPython 解釋器中同時執行多個線程。GIL 確保在任意時刻只有一個線程執行 Python 字節碼。這是為了保護訪問 Python 對象的內部數據結構免受并發問題的影響。盡管 GIL 會限制多線程應用的性能,但在 I/O 密集型任務中,多線程仍然可以提高效率。
2. 如何實現多進程并行處理來繞過 GIL 的限制?
解答:
可以使用 Python 的 multiprocessing 模塊來實現多進程并行處理,從而繞過 GIL 的限制。每個進程都有自己獨立的 GIL,因此多進程可以真正實現并行執行。
from multiprocessing import Processdef task():
print("Task running")if __name__ == '__main__':
processes = [Process(target=task) for _ in range(4)]
for p in processes:
p.start()
for p in processes:
p.join()
3. Python 中的裝飾器是什么?請實現一個簡單的裝飾器。
解答:
裝飾器是一個函數,用于在不改變被裝飾函數代碼的情況下擴展其功能。裝飾器函數接收一個函數作為參數,并返回一個新的函數。
def my_decorator(func):
def wrapper():