Python在并发编程中是个严肃的选择吗
我正在考虑开始学习Python,但在投入更多时间之前有一个担忧。让我先说一个观点,然后再说说我的担忧,希望大家能评论一下,因为这个观点的假设可能不太准确:
我了解到GIL(全局解释器锁),大家的共识似乎是,如果你需要在Python中实现并发解决方案,最好的办法是创建一个新的进程来避免GIL的影响。
我的担忧是,如果我有一个问题想要在N个处理器上分成N*2个部分(假设我有一台运行*nix操作系统的服务器,拥有8个核心),那么在进程之间切换会比在线程之间切换更耗时,这样会影响性能。
我之所以这样问,是因为还有其他语言声称在这种情况下表现更好,我想知道Python是否适合这种需求。
7 个回答
3
根据我有限的经验,"上下文切换的成本"被过分夸大了,作为性能的限制。
输入输出带宽和内存是最常见的限制因素。Python的输入输出性能和很多其他语言差不多,因为它基本上直接使用了标准的C库。
你遇到的问题可能并不典型。不过,很多问题在多进程模式下表现得很好,因为它们实际上是受输入输出限制的。通常是文件系统、网页读取或者数据库操作在性能上限制得比上下文切换要早得多。
15
multiprocessing
是一个可以帮助我们绕过全局解释器锁(GIL)的问题的工具,但它也带来了自己的麻烦,比如进程之间的沟通问题。