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

开发 后端
python多线程在应用的时候需要注意不少的事情,其中一配对来说就是相当重要的。下面就会为大家详细的介绍如何进行python多线程应用。

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

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

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

 

  1. #include <python.h> 
  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多线程的详细介绍。希望对大家有所帮助。

【编辑推荐】

  1. 讲述Python序列如何进行解包教程
  2. Python函数需要不断的学习和完善
  3. Python源代码构架的三大主要结构
  4. python字符串处理以灵活为***优点
  5. 用Python异常处理来显示错误信息
责任编辑:张浩 来源: IT博客
相关推荐

2011-07-22 14:55:20

多线程

2023-10-06 23:06:01

多线程Python

2010-03-15 19:11:39

Java多线程语句

2022-03-09 17:01:32

Python多线程多进程

2010-03-18 15:47:07

Java创建线程

2013-03-27 10:32:53

iOS多线程原理runloop介绍GCD

2011-07-20 17:16:50

C++重载函数

2010-03-01 13:13:02

Python应用线程

2011-08-08 13:50:29

iPhone开发 NSOperatio 多线程

2009-10-09 17:01:32

VB.NET多线程

2010-02-24 13:25:22

Python线程应用程

2023-07-27 08:59:19

线程同步Python

2010-03-17 15:45:06

Java多线程求和

2010-03-17 19:24:38

Java多线程循环

2010-03-16 13:04:17

Python环境

2010-03-17 14:58:20

Java多线程

2011-07-12 18:02:00

PHP

2011-07-08 16:54:39

JspCookies

2011-06-21 14:25:44

JavaScriptcookie

2010-01-18 14:09:58

C++多线程
点赞
收藏

51CTO技术栈公众号