我正在为GPIO驱动程序提供的功能编写Python extension。我在set_bit()和clear_bit()这样的简单函数上轻松取得了进展。但是现在我需要实现wait_int(),这个睡眠直到在输入引脚上检测到一个事件,我不确定在c和python之间编排这条命令的正确方法。下面是在c。使用功能的精简例子:Python C扩展,用于睡眠功能
main(int argc, char *argv[])
{
int c;
//some setup like testing port availability, clearing interrupts, etc
...
while(1)
{
printf("**\n");
c = wait_int(1);//sleeps until an interrupt occurs on chip 1
if(c > 0) {
printf("Event sense occured on Chip 1 bit %d\n",c);
++event_count;
}
else
break;
}
printf("Event count = %05d\r",event_count);
printf("\nExiting Now\n");
}
难道我只是暴露wait_int非常直接,然后为所欲为无限循环的蟒蛇相当于成语是什么?还有一些需要解决的问题。我已经在c做了它,但也许它可以被移到python一侧。
很简单。而True:wait_int() – tladuke
如果我把它放在python线程中,它会阻塞任何其他线程,直到出现中断为止。 – tladuke
Py_BEGIN_ALLOW_THREADS修正了它。 – tladuke