- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个用 python 编写的系统,它使用由具有不同经验水平的开发人员编写的插件来处理大量数据。
基本上,应用程序会启动多个工作线程,然后向它们提供数据。每个线程确定用于某个项目的插件并要求它处理该项目。插件只是一个定义了特定功能的 python 模块。处理通常涉及正则表达式,并且不应超过一秒左右。
有时,其中一个插件需要 分钟 才能完成,整个时间内 CPU 都占用 100%。这通常是由次优正则表达式与暴露效率低下的数据项配对引起的。
这就是事情变得棘手的地方。如果我怀疑罪魁祸首是谁,我可以检查它的代码并找出问题所在。然而,有时我并没有那么幸运。
如果不将整个架构重写为多处理,我有什么办法可以找出谁在占用我所有的 CPU?
已添加:在回答一些评论时:
在 python 中分析多线程代码没有用,因为分析器测量的是总函数时间而不是事件 cpu 时间。试试 cProfile.run('time.sleep(3)') 看看我的意思。 (归功于 rog [最后评论])。
单线程之所以棘手,是因为 20,000 项中只有一项导致了问题,而且我不知道是哪一项。运行多线程允许我在大约一个小时内处理 20,000 个项目,而单线程可能需要更长的时间(涉及大量网络延迟)。还有一些我现在不想讨论的并发症。
也就是说,尝试序列化调用插件的特定代码是个不错的主意,这样一个插件的时序就不会影响其他插件的时序。我会尝试并报告。
最佳答案
你显然不需要多线程,只需要并发,因为你的线程不共享任何状态:
尝试多处理而不是多线程
单线程/N个子进程。在那里你可以为每个请求计时,因为没有 GIL 被保留。
另一种可能性是摆脱多个执行线程并使用基于事件的网络编程(即使用扭曲)
关于python - 在多线程python中查找cpu-hogging插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1031425/
我打算将 hog 特征描述符与 SVM 分类器结合用于对象检测项目。 scikit-image 中提供的 hog 在分类阶段产生了非常好的结果。但是,它运行得非常慢(手头每张图像 20 秒)。另一方面
在 OpenCV 中,有一个 CvSVM 类,它接受样本矩阵来训练 SVM。矩阵是二维的,样本在行中。 我创建了自己的方法来根据视频源生成定向梯度 (HOG) 直方图。为此,我创建了一个 9 chan
我有一段 MATLAB 代码,它从图像中提取一个 91x91 的像素 block ,然后用苹果 HOG 提取其特征向量。我想用 Python 重写函数。我一直在努力寻找如何在 Python 中获得与在
使用时从图像中提取HOG功能时 bin_n = 16 # Number of bins def hog(img): gx = cv2.Sobel(img, cv2.CV_32F, 1, 0)
在 openCV 中似乎没有任何 HOG 训练的实现,关于 HOG 训练如何工作的资料也很少。根据我收集到的信息,HOG 训练可以实时完成。但是培训的要求是什么?培训过程实际上是如何进行的? 最佳答案
我们有一个项目可以从图像中识别 Logo 。我们最初使用 Haar 分类器,但训练 Haar 分类器需要很多时间(在我们的 Core i5 机器上每个 Logo 需要 4 天)。为 300 多个 Lo
我在试图理解本文中 HOG 特征的大小时感到困惑。 Mid-level Elements for Object Detection. .在Dalal的工作中,一个64*128像素的窗口是由一个4*9*
我想检测显微镜图像细胞内的物体。我有很多带注释的图像(大约 50,000 张带有对象的图像和 500,000 张没有对象的图像)。 到目前为止,我尝试使用 HOG 提取特征并使用逻辑回归和 Linea
我正在从事杂草检测工作。我已经开始从 HoG 描述符中提取特征。正如从 HoG 文献中研究的那样,HoG 不是旋转不变的。我总共有 18 张草类杂草的图像,有两类。在我的训练和测试数据库中,我将每个图
我正在从事杂草检测工作。我已经开始从 HoG 描述符中提取特征。正如从 HoG 文献中研究的那样,HoG 不是旋转不变的。我总共有 18 张草类杂草的图像,有两类。在我的训练和测试数据库中,我将每个图
根据HOG过程,如论文人体检测定向梯度直方图(请参阅下面的链接)中所述,对比度归一化步骤在合并和加权投票后完成。 我一无所知-如果我已经计算了像元的加权梯度,那么图像对比度的标准化现在对我有什么帮助?
我无法理解 HOG 特征向量的大小... 场景:我拍摄了一张 286x286 图像。然后我计算了每个 8x8 补丁的 HOG。这意味着我得到了 8x8x2=128 个数字,由每个补丁的 9 bin 直
我从 hog.compute 函数中提取了特征,然后使用这些特征来训练 SVM 分类器。我使用了在网上找到的一个脚本来从分类文件中分离出 rho 和支持向量。 tree = ET.parse('svm
我是使用 HOG 检测器检测路上行人的新手,我已经编写了代码并尝试运行它,但它总是在这一行出现错误:“hog.setSVMDetector(HOGDescriptor: :getDefaultPeop
跟踪对象时,我希望能够在遮挡后重新检测到它。 在 OpenCV 3.4.5 (C++) 上,我尝试了模板匹配和光流分割。但是现在,我想使用 HOG 描述符实现更稳健的算法。 我举了一个小例子来说明这个
在谈论 Linux 内核时,“stack hog”是什么意思? 我在一些 Linux 内核书籍(Wolfgang Mauerer 的 Professional Linux Kernel Archite
在我的应用程序中,我必须使用静态摄像头跟踪大学讲座中的讲师。目前我正在使用 Emgu CV 的默认 GPUHOGDescriptor,如果讲师的整个 body 都可见,它会很好用。在讲师站在 tabl
我正在研究真菌孢子检测。我有大约 359 张正图像(真菌颗粒的裁剪图像)和 171 张负图像(灰尘颗粒的裁剪图像)。 pos/nag 图像的实际大小与粒子大小相同,约为 8x8,但对于 SVM 训练,
我已经使用 HOG 实现了汽车检测器,目前工作正常。不幸的是,我对分类器有很多误报。 到目前为止我做了什么 我将样本的比率(正:负)从 1:1 更改为 1:3 并将误报率降低到一定程度。有人可以帮助减
我有 5000 张图像,每张图像可以生成一个大约 1000 维的向量(hog 特征),但是有些图像非常相似,所以我想删除相似的图像。有办法实现吗? ==========================
我是一名优秀的程序员,十分优秀!