Python的C扩展中的全局变量的值是否在函数调用中持续存在?

问题描述 投票:0回答:1

基本上,说我的C扩展名中有一些全局变量foo,像这样设置为3的初始值:

int foo = 3;

并且说在函数调用foobar中foo的值更改为4:

int foobar() {
    foo = 4;
    return 0;
}

如果我在C扩展上再次调用,则foo的值是否重置为3,或者foo的值是否在函数调用之间保持不变并保持4?

似乎foo将继续存在是有道理的,但我认为安全比后悔好。

python python-c-api
1个回答
1
投票

一个共享对象或dll在每个python进程中加载​​一次(除非您有关闭重新打开C扩展名的显式代码)

因此全局变量和静态变量将持续一个进程。 (及其线程)

© www.soinside.com 2019 - 2024. All rights reserved.