python多线程应用中的详细介绍

python多线程在应用的时候有不少的事情需要重点的注意。其实只要掌握这些相关的技术段就能保证这个应用的完整。下面我们来看看具体是需要如何进行操作。

今天看了近一天关于多线程的应用中,如何安全调用python多线程方面的资料,开始的时候看的简直头大如斗,被python语言的全局锁(Global Interpreter Lock)、线程状态(Thread State )等都有点绕晕了,后来经过各方面文章和帮助文档的相互参考,发现对于2.4/2.5版本,提供了PyGILState_Ensure, PyGILState_Release,哎,这下可方便大发了。

一、首先定义一个封装类,主要是保证PyGILState_Ensure, PyGILState_Release配对使用,而且这个类是可以嵌套使用的。

 
 
 
  1. #include 
  2. class PyThreadStateLock
  3. {
  4. public:
  5. PyThreadStateLock(void)
  6. {
  7. state = PyGILState_Ensure( );
  8. }
  9. ~PyThreadStateLock(void)
  10. {
  11. PyGILState_Release( state );
  12. }
  13. private:
  14. PyGILState_STATE state;
  15. };

二、在主线程中,这样处理

// 初始化
Py_Initialize();
// 初始化线程支持
PyEval_InitThreads();
// 启动子线程前执行,为了释放PyEval_InitThreads获得的全局锁,否则子线程可能无法获取到全局锁。
PyEval_ReleaseThread(PyThreadState_Get());

// 其他的处理,如启动子线程等
......

// 保证子线程调用都结束后
PyGILState_Ensure();
Py_Finalize();
// 之后不能再调用任何python的API

以上就是对python多线程的详细介绍。希望对大家有所帮助。

当前文章:python多线程应用中的详细介绍
文章起源:http://www.csdahua.cn/qtweb/news17/456017.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网