尽管有 GIL 的限制,Python 中线程的用途是什么?

What is the use of threading in Python despite of the limitations imposed by GIL?

我正在努力解决这个问题。我做了一些研究,发现多线程任务比顺序任务慢很多。受人尊敬的 David Beazley 在他的一些并发任务中也提到了这一点。为了实现类似(某种)行为,我可以使用多处理模块生成一个新进程,但生成一个进程比生成一个线程需要更多时间。所以,我想知道除了 I/O 绑定任务之外,我可以在哪些用例中使用线程模块。请帮助我理解这一点。

实际的限制是 CPython 的限制,而不是语言的限制。鉴于此,线程可用于 运行 并发任务,只要(在 CPython 中)只有一个任务具有 python 代码。

除了 IO,一个例子是执行冗长计算并释放 GIL(在 CPython 的情况下)的 c 扩展。