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():