Python 中的并发支持与 C# 和 C++ 相比

本文关键字:C++ 相比 支持 并发 Python | 更新日期: 2023-09-27 17:56:48

我正在寻找对两种语言都有深入研究的人的解释。使用过 C# 和 C++ 的人,我知道 C# 从 .Net 4.0 开始提供了一个任务并行库。C++还有一个并发运行时库 http://msdn.microsoft.com/en-us/library/dd504870.aspx。

如何在 python webapps 中实现并发,而不是生成进程,而是任务线程。假设用户能够管理锁等。

Python 中的并发支持与 C# 和 C++ 相比

警告:并发不是并行性。 Warren 是正确的,全局解释器锁 (GIL) 限制了单个 Python 进程中的并行性,但如果进程是 IO 绑定的,则基于选择的应用程序可以提供足够的并发性而没有并行性(Python 的 asyncore 文档对基于选择的工作流进行了很好的讨论)。

也就是说,Python 的 Twisted 框架提供了类似未来的对象,称为延迟,并在后台进行多线程处理(显然 GIL 在任何给定时刻将每个进程限制为单个线程)。 尽管有些人发现 Twisted 级别太低和/或延迟到复杂的 Web 应用程序开发。

在极端情况下,如果本机代码不打算与 Python 对象交互,则从 Python 调用的本机代码可能会释放 GIL。 例如,ctypes 为 C 函数提供了一个基本的接口,该接口在 C 函数运行时释放 GIL。 使用其他扩展框架(如Boost.Python和SIP)也可以获得类似的结果。

Python 有一个全局解释器锁,可以防止一次执行多个线程,本质上阻止并发。 这就是为什么你会看到人们在 Python 中想要并发时生成进程。 相比之下,C# 和 C++ 允许并发线程。

有关为什么 Python 具有全局解释器锁的更多信息

,请参阅为什么使用全局解释器锁?。