python - 什么时候在 Python 中使用线程?

标签 python python-3.x

<分区>

有人告诉我,由于 GIL,在 Python 中使用线程不是一个好习惯。我认为创建线程的开销只会减慢速度并最终使其比单线程应用程序慢。 那么,为什么Python首先要有线程库呢?什么时候应该使用线程?

(我假设是 Python3)

最佳答案

@kindall 在他的评论中给出了答案。

多线程不是加速任何处理的神奇工具。这是一种在系统中同时存在多个线程的方法。它可以用于在多个内核上拆分处理以进行计算绑定(bind)处理(由于全局解释器锁,这个不在 CPython 中)。但它也可以用于 io-bound 处理:一个线程运行而其他线程等待 io 完成。一个很好的例子是多线程 TCP 服务器,其中每个线程可以服务于不同的客户端连接。 CPython 实现在这里很好,因为 GIL 没有理由阻塞已经在 io 级别阻塞的线程。

结束一般的多线程:它不应该永远用于内存绑定(bind)处理...

关于python - 什么时候在 Python 中使用线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43568198/

相关文章:

python - Pandas 频率表的描述性统计

python - 如何在 Pandas 中读取 .txt

python - 相同的 Python 代码对相同的输入字符串返回不同的结果

python - 有中英翻译API服务吗?

python - 将 TSV 文件中的列加载到 python 列表中

Python 全局变量、局部变量和 UnboundLocalError

python - 在 Excel 文件中禁用 protected View 模式 - 使用 xlwt 、 python

django - 如何在 UpdateAPIView 中返回自定义 JSON 响应?

python-3.x - 删除 Pandas 数据框中的小数列

python - 获取当前选中的 QTreeView 项的文本和索引