0
点赞
收藏
分享

微信扫一扫

使用python多线程加载模型并测试


机器学习AI算法工程   公众号:datayx


    

之前只用过单线程处理,加载模型进行测试,运行时间上也可以接受。但是现在需要处理比较大量的数据,如果进行线性处理,可能测试一次就花10个小时,而且还不知道结果怎么样,所以多线程就必须使用上了。有关线程部分主要参考:https://junyiseo.com/python/211.html


1 多线程


多线程类似于同时执行多个不同程序,线程在执行过程中与进程还是有区别的。每个独立的进程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。


特点:


线程可以被抢占(中断)。

在其他线程正在运行时,线程可以暂时搁置(也称为睡眠) – 这就是线程的退让。


应用场景:


使用线程可以把占据长时间的程序中的任务放到后台去处理。

用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度

程序的运行速度可能加快


在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。

以上内容来自:https://www.runoob.com/python/python-multithreading.html




2 使用多线程进行多模型加载和测试


先说一下如何分配多线程执行的思路:


由于单线程进行测试的时候是一张图像进一次网络,然后得到结果。其占用的显存很小,只有900MB左右,而这里使用的是11G显存,所以在这种条件下支持每一个线程分配一个模型,然后进行预测。


然后就是数据分配问题,多线程常常会遇到访问数据冲突的问题,但是这里我们可以避开这个问题,是用一个List存储所有图片,然后根据长度分配每个线程所要处理的图片多少。


剩下就可以看模板了。


这里提供一个模板,可以替换其中关键的测试图片的函数,然后就可以运行了。


全部代码获取方式:

关注微信公众号 datanlp  然后回复 多线程 即可获取。


使用python多线程加载模型并测试_python

使用python多线程加载模型并测试_python_02

使用python多线程加载模型并测试_python_03


结果:


使用python多线程加载模型并测试_深度学习_04



加载了16个模型,同时进行处理:


使用python多线程加载模型并测试_特征工程_05



本文主要提供了一个模板进行多模型加载,但是如果一个模型就很大的情况下,这种就明显不合适了。但可以想到的是一次从多个batch进行测试,然后记录结果。



机器学习算法AI大数据技术

 搜索公众号添加: datanlp

使用python多线程加载模型并测试_深度学习_06


不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

使用python多线程加载模型并测试_特征工程_07


举报

相关推荐

0 条评论