【问题标题】:Python GIL: concurrent C++ embedPython GIL:并发 C++ 嵌入
【发布时间】:2014-08-20 08:50:42
【问题描述】:

python嵌入到c++中可以让你同时运行n个python脚本吗?

我目前正在处理 GIL 的恐惧。我的项目需要至少 2 个线程的并发性,而在 Python 中轻松输入确实有助于简化代码。

是否会将我的 Python 代码嵌入到处理线程的 C++ 脚本中以规避 GIL 导致的问题?

【问题讨论】:

    标签: python c++ multithreading cpython gil


    【解决方案1】:

    python嵌入到c++中可以让你同时运行n个python脚本吗?

    您无需执行任何操作即可同时运行多个 Python 脚本。 GIL 对于解释器来说是本地的,因此如果您运行多个解释器进程,GIL 不会阻止它们同时执行。

    如果这是一个错字并且您的意思是 threads 那么是的,您可以从 Python 调用 C 或 C++ 代码来绕过 GIL。相关 API 详情请见Thread State and the Global Interpreter Lock

    【讨论】:

      【解决方案2】:

      仅当您产生单独的解释器时。 GIL 是一个解释器策略,用于保护解释器内部结构。一位解释器一次运行一行。

      唯一的另一种方法是用纯 C++ 编写至少一个线程,并为你的 python 脚本提供通信队列 API 或任何真正异步通信的方式。

      【讨论】:

      • 我不相信第二段是正确的。 C++ 扩展可以释放 GIL,从而实现与其他类似线程和 Python 解释器线程的并发。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      • 2014-04-03
      • 2020-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多