为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 python 线程会减慢更快的 R-CNN 的推理时间

为什么 python 线程会减慢更快的 R-CNN 的推理时间

繁星coding 2022-07-26 16:06:26
我正在开发一个流量跟踪系统,该系统分析已经收集的视频。我正在使用 opencv、threading、pytorch 和 dectron2。为了加快从 opencv 抓取帧的速度,我决定使用一个线程,它运行一个循环,用帧填充队列,如本文中所见。在实现这个之后,我可以像我的处理管道的其余部分一样快地访问帧,所以那里没有问题。当我现在对帧进行推理(只是通过 Faster R-CNN 模型的前向传递)时,就会出现问题,这需要 5 秒以上,而过去需要 0.11 秒。我的 GPU 正在被使用,而我的 CPU 远未充分利用。什么可能导致这种情况发生?
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

CPython 有一个全局解释器锁。这意味着解释器有一个大锁,它可以防止同时从多个线程评估 Python 字节码。

用 C 实现并提供对高级操作的访问的包通常能够在运行时释放 GIL,但如果您的处理代码主要是 Python 和 CPU-bound,您将不会从多线程中获得任何加速:您'会有线程相互争斗,但由于 GIL,您的处理最终将完全按顺序进行。

在这种情况下,您需要多处理来获得加速,GIL 是每个解释器的,因此不同进程中的独立解释器不会相互干扰。但是,通信/同步成本甚至更高。


查看完整回答
反对 回复 2022-07-26
  • 1 回答
  • 0 关注
  • 80 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号