Python还是很适合快速开发的
上周为了重写公司的其中一个关键进程,断然选用Python快速开发了一版
首先,是启动器
虽然python脚本可以直接启动,但为了兼容其他进程,需要封装成一个原命名的进程
#include <Python.h>
#include <sched.h>
int main(int argc, char *argv[]) {
//设置进程优先级,因为有其他更重要的进程
nice(10);
// 设置cpu亲和性,因为是4线程的机器,所以仅亲和后2个cpu
cpu_set_t mask;
CPU_ZERO(&mask);
CPU_SET(2, &mask);//第3个
CPU_SET(3, &mask);//第4个,其实就是第二个core
sched_setaffinity(0, sizeof(mask), &mask);
Py_SetProgramName(argv[0]);
Py_Initialize(); //标准的啦,初始化Python环境
PySys_SetArgv(argc, argv);
FILE * fp = fopen("/home/xxx/yyy/zzz.py", "r"); //打开入口py脚本的句柄,准备打开
// 这里并没有去判断是否真的存放,因为必须存放,不然也什么都做不了
//PyRun_SimpleFile(fp, "zzz.py");
PyRun_AnyFile(fp, "zzz.py"); //启动之,哈哈
Py_Finalize(); // 严格来说从不调用,哈哈,因为是守护进程,退出的话,都是直接退
return 0;//符合标准C嘛,哈哈
}
编译之
gcc -O2 -I/usr/include/python2.7 -lpython2.7 -MD -MT -pthread -ldl zzz.c -o zzz
需要带上-pthread和-dl等参数,否则可能无法加载模块
python代码部分
把路径添加进去,防止找不到py文件
import sys
sys.path.append("/home/xxx/yyy")
接下来的,自然就是业务逻辑了
话说,最近耗子哥跟百毒闹得很欢哦,哈哈
blog comments powered by Disqus