Python 官方文档:入门教程 => 点击学习
这篇文章给大家介绍怎么在python中获取和释放GIL,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而不是搞明白语言本身。
这篇文章给大家介绍怎么在python中获取和释放GIL,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而不是搞明白语言本身。2.面向对象,与其他主要的语言如c++和Java相比, Python以一种非常强大又简单的方式实现面向对象编程。3.可移植性,Python程序无需修改就可以在各种平台上运行。4.解释性,Python语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序。5.开源,Python是 FLOSS(自由/开放源码软件)之一。
1、说明
线程对GIL的操作本质上就是通过修改locked状态变量来获取或释放GIL。
2、获取GIL实例
线程在其他线程已经获取GIL的时候,需要通过pthread_cond_wait()等待获取GIL的线程释放GIL。
int PyThread_acquire_lock(PyThread_type_lock lock, int waitflag){ int success; pthread_lock *thelock = (pthread_lock *)lock; int status, error = 0; status = pthread_mutex_lock( &thelock->mut ); success = thelock->locked == 0; if ( !success && waitflag ) { while ( thelock->locked ) { status = pthread_cond_wait(&thelock->lock_released, &thelock->mut); } success = 1; } if (success) thelock->locked = 1; status = pthread_mutex_unlock( &thelock->mut ); if (error) success = 0; return success;}
3、释放GIL实例
特别注意最后一步, 通过pthread_cond_signal()通知其他等待(pthread_cond_wait())释放GIL的线程,让这些线程可以获取GIL。
void PyThread_release_lock(PyThread_type_lock lock){ pthread_lock *thelock = (pthread_lock *)lock; int status, error = 0; status = pthread_mutex_lock( &thelock->mut ); thelock->locked = 0; status = pthread_mutex_unlock( &thelock->mut ); status = pthread_cond_signal( &thelock->lock_released ); }
关于怎么在python中获取和释放GIL就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
--结束END--
本文标题: 怎么在python中获取和释放GIL
本文链接: https://lsjlt.com/news/272074.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0