Python 中C 绑定的一点好玩的现象
以下是简单的C代码lib.c,用于测试Python中的C绑定。
#include<stdio.h>
void prompt(int num){
printf("Please input a number: %d", num);
}
int add(int a, int b){
return a + b;
}
编译为动态链接库
clang -fPIC -shared lib.c -o lib
试着运行一下
import ctypes
lib = ctypes.CDLL('./lib')
lib.prompt(10)
print(lib.add(4,5))
输出结果为:
9
Please input a number: 10
奇怪在于,按照python的规格,执行代码应该从左到右,从上到下,但是这里的输出结果却是先输出了9
,然后才输出了Please input a number: 10
。
再来, 我在prompt后sleep一下
import ctypes
import time
lib = ctypes.CDLL('./lib')
lib.prompt(10)
time.sleep(5)
print(lib.add(4,5))
结果还是一样。