Python双线程使用

本文探讨了在Python中使用双线程进行人脸匹配以提高效率的问题。由于Python的GIL锁限制,多线程无法充分利用多核CPU,但在IO密集型任务如人脸匹配中,仍能通过双线程提升部分性能。文中描述了一个双线程方案,每个线程处理人脸库的一半,通过全局变量实现线程间通信,但实际应用中由于线程管理开销,速度提升不明显。作者指出,真正影响速度的是报警模块,并计划在未来继续优化人脸识别技术。
摘要由CSDN通过智能技术生成

最近研究人脸匹配,在人脸匹配过程中,由于摄像头输入的人脸要与数据库中的人脸比较,但由于数据库中的人过多,逐一匹配速度可能会降低,故选用双线程实现匹配加速,本文主要就python如何使用双线程进行记录。 由于Python的解释器CPython的原因,Python并不能使用双线程。因为CPython存在GIL锁,具体原因:

因为Python的线程虽然是真正的线程,但解释器执行代码时,有一个GIL锁:Global Interpreter Lock,任何Python线程执行前,必须先获得GIL锁,然后,每执行100条字节码,解释器就自动释放GIL锁,让别的线程有机会执行。这个GIL全局锁实际上把所有线程的执行代码都给上了锁,所以,多线程在Python中只能交替执行,即使100个线程跑在100核CPU上,也只能用到1个核。 摘自http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832360548a6491f20c62d427287739fcfa5d5be1f000(侵权删)

故只能使用单核运行,而我的机器是单核双线程。故使用单核上的两个线程去完成任务。 至于为何能使用单核双线程,也在摸索中。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值