gpt4 book ai didi

python - 在多线程中调用 Py_Initialize()

转载 作者:行者123 更新时间:2023-11-30 05:13:41 26 4
gpt4 key购买 nike

我正在将 Python 嵌入到多线程 C++ 应用程序中,调用它安全吗?Py_Initialize() 在多线程中?还是应该在主线程中调用?

最佳答案

Py_Initialize() 代码包含:

if (initialized)
return;
initialized = 1;

该函数的文档还说:

This is a no-op when called for a second time (without calling Py_Finalize() first).

不过,我的建议是您只从主线程执行此操作,但根据您的操作,它可能会变得复杂。

问题在于信号处理程序仅在主 Python 线程的上下文中触发。也就是说,调用 Py_Initialize() 的线程是什么。因此,如果这是一个临时线程并且只使用一次然后被丢弃,那么就没有机会调用信号处理程序。因此,您必须考虑如何处理信号。

在使用本地线程 API 和调用 Python 解释器时使用 C 代码创建的大量 transient 线程时也要小心,因为每个线程都会在 Python 解释器中创建数据。如果继续创建和丢弃这些外部线程,那将会累积。如果从外部线程调用,您应该尽量使用线程池,并继续重用之前的线程。

关于python - 在多线程中调用 Py_Initialize(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43838033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com