当前位置: 首页 > 面试题库 >

Python线程什么时候快速?

长孙哲
2023-03-14
问题内容

我们都知道GIL的恐怖之处,并且我已经看到了很多有关使用multiprocessing模块的正确时间的讨论,但是我仍然不觉得我对使用Python进行线程化有很好的直觉(专注于主要在CPython上)是正确的答案。

在哪些情况下,GIL并非重大瓶颈?线程是最合适答案的用例类型是什么?


问题答案:

线程只有在您有大量阻塞I /
O发生时才有意义。如果真是这样,那么某些线程可以睡眠,而其他线程可以工作。如果线程受CPU限制,则多线程处理不太可能带来很多好处。

请注意,尽管多处理模块很难编写代码,但它使用了单独的进程,因此不会遭受GIL的不利影响。



 类似资料:
  • 问题内容: 因此,我对Node.js的工作方式有所了解:它具有一个侦听器线程,该线程接收事件,然后将其委托给工作池。工作线程一旦完成工作,便会通知侦听器,然后侦听器将响应返回给调用者。 我的问题是:如果我在Node.js中建立一个HTTP服务器,并在我的一个路由路径事件(例如“ / test / sleep”)中调用sleep,那么整个系统就会停顿下来。甚至是单个侦听器线程。但是我的理解是这段代码

  • 问题内容: 我知道Deamon是后台线程。我们可以通过调用创建自己的守护程序线程。 我的问题是:为什么以及何时需要将我们的线程创建为守护程序线程? 问题答案: 当所有正在运行的线程都是守护程序线程时,JVM将退出。因此,想象一下您正在编写一个简单的游戏,其中您的主要方法一直循环直到您决定退出为止。想象一下,在游戏开始时,您启动了一个线程,该线程将不断轮询某些网站以触发警报。当您决定结束游戏时,您希

  • 问题内容: 我听说在某些情况下,由于JIT优化,Java程序或Java程序的某些部分比C ++(或其他预编译的代码)中的“相同”代码执行得更快。这是由于编译器能够确定某些变量的范围,避免某些条件并在运行时提取类似的技巧。 您能否举一个(或更佳的)例子,在哪里适用?也许概述了编译器能够优化字节码的确切条件,超出了预编译代码的范围? 注意: 此问题 不是 关于将Java与C ++进行比较。关于JIT编

  • 本文向大家介绍SVM中什么时候用线性核什么时候用高斯核?相关面试题,主要包含被问及SVM中什么时候用线性核什么时候用高斯核?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 当数据的特征提取的较好,所包含的信息量足够大,很多问题是线性可分的那么可以采用线性核。若特征数较少,样本数适中,对于时间不敏感,遇到的问题是线性不可分的时候可以使用高斯核来达到更好的效果。

  • 本文向大家介绍什么时候用delegate,什么时候用Notification?相关面试题,主要包含被问及什么时候用delegate,什么时候用Notification?时的应答技巧和注意事项,需要的朋友参考一下 答:delegate针对one-to-one关系,并且reciever可以返回值 给sender,notification 可以针对one-to-one/many/none,recieve

  • 问题内容: 奇怪的是: 似乎或多或少被定义为。通过这种方式很容易产生错误: 一些fname意外地以else块结尾。修复很简单,我们应该改用它,但是从表面上看,这似乎是一种不错的pythonic方式,并且比“正确”的方式更具可读性。 由于字符串是不可变的,所以为什么字符串错误是什么技术细节?什么时候进行身份检查更好,什么时候进行平等检查更好? 问题答案: 据我所知,检查对象身份是否相等。由于没有强制

  • 问题内容: 我有一个将客户发送到另一个站点来处理付款的应用程序。客户之外的另一个站点在我们的服务器上调用一个页面,让我们知道付款的状态。被调用页面会检查付款应用程序提供的参数,并检查我们是否知道该交易。然后,它更新数据库以反映状态。这一切都无需与客户进行任何互动即可完成。 我个人选择将此功能实现为JSP,因为将文件拖放到文件系统中比编译和打包文件然后将条目添加到配置文件中要容易得多。 考虑到页面的

  • 问题内容: 我想要的不是Redis和MongoDB之间的比较。我知道他们是不同的。性能和API完全不同。 Redis的速度非常快,但是API的“原子性”非常好。MongoDB将占用更多资源,但是该API非常易于使用,对此我感到非常满意。 它们都很棒,我想在部署中尽可能多地使用Redis,但是很难编写代码。我想在开发中尽可能多地使用MongoDB,但是它需要一台昂贵的机器。 那么您如何看待两者的使用