工具:Python3.7(64 位),Visual C++ 10.0 我正在尝试为 Python 创建一个 C 扩展。首先,我正在测试一个简单的 C 代码,它打印一个字符串并在for循环中调用 Sleep() 函数。但是,当我从 Python 对这个名为 gen_nums 的 C 函数进行简单调用时,出现以下错误:
“系统错误:内置函数 gen_nums 返回 NULL 且未设置错误”
我认为问题出在 Sleep() 函数上;删除“睡眠(1000)”部分或将其放在“printf(“从C线程打印...\n”)”之前消除了这个错误。我查看了 Sleep() 的文档,但找不到任何有用的东西。
代码:
#include <Python.h>
static void gen_nums() {
int i;
for(i = 0; i < 10; i++) {
printf("Printed from C thread...\n");
Sleep(1000);
}
}
static PyMethodDef gen_numsmethods[] = {
{"gen_nums", gen_nums, METH_VARARGS, "This is a threading test"},
{NULL, NULL, 0, NULL}
};
static struct PyModuleDef threadmod = {
PyModuleDef_HEAD_INIT,
"threadrun",
"This is a thread test module",
-1,
gen_numsmethods
};
PyMODINIT_FUNC PyInit_threadrun(void) {
return PyModule_Create(&threadmod);
}
Python调用:
threadrun.gen_nums() \\ the C module is called threadrun
结果应该是:“从 C 线程打印...”10 次,每条语句之间间隔 1 秒。
但是,程序打印该语句 10 次,然后显示上述错误。
回首忆惘然
相关分类