python实战12神仙问题集锦

执行速度

问题:一个函数,姑且称之为函数A,用demo单独测试,时间非常快200ms,但是集成到大系统中,则非常慢,基本在3s左右。解析:函数A内部有如下部分组成,预处理(cpu密集),硬件处理(专用芯片),后处理(cpu密集)猜测1:cpu运算,在arm上非常慢导致(虽然单独测试的demo也在arm上,但demo是纯粹执行函数A,而大系统中的函数A则和大系统本身分享cpu资源)测试:分别统计各步骤测试,结论:全面落后,包括硬件处理(专用芯片)步骤,说明不是这个问题(如果预处理,后处理很慢,专用芯片正常,说明可能瓶颈在cpu上)

猜测2:大系统中存在另一个解码线程,占用cpu过多,验证:跑程序时,ps -fe找到进程pid,通过top -Hp pid查询进程下各线程cpu占用,发现一个线程基本占满99%左右。测试:解码一帧后就停止解码线程结论:函数执行时间正常,说明猜测正确,的确是由于进程内其他线程占用过多资源,导致函数A所在线程执行机会很少,所以各步骤都非常慢。这个角度看,猜测1也是正确的,不过自己忽略了在专用芯片的这个步骤上,如果cpu被其他任务占用过多,一样会拖慢时间。