python ctypes 多线程_python C扩展多线程 构造list对象抛异常,求大虾进来发表意见!!!!...

环境:VS 2012编写C扩展,python 2.7脚本调用库中的函数

功能:遍历分析100万条记录,找出符合条件的记录。以前使用纯python脚本,因为性能跟不上,多核的CPU无法有效利用,所以想尝试通过python脚本控制多线程,每个线程分一批数据分析,最后汇总结果。接口的参数有:rcd_list(传入的记录列表,每个线程10万条),result_dic(用于存放满足条件的记录)。

问题:采用多线程后,发现在循环里调用PyList_New或者类似的PyTuple_New累计到一定的次数(250,245次)后,pRcd = PyList_New(2);就core掉,抛异常。去掉多线程的声明Py_BEGIN_ALLOW_THREADS宏,就不存在此问题,查找多个文档,没有找到正解,期望大虾给些 意见啊。

代码结构:

PyObject* wrap_test(PyObject* self, PyObject* args)

{

Py_BEGIN_ALLOW_THREADS

PyObject * lstTemp = PyList_New(1);

for (int i =0;i < 100000; i++)

{

printf("index:%d\n ",i );

PyObject *pRcd = NULL;

pRcd = PyList_New(2);//运行到一定次数后,core在这句,对象没有构建成功

PyList_Append(lstTemp,pRcd);

Py_DECREF(pRcd);

}

Py_END_ALLOW_THREADS

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值