近日需要處理大批量影象資料,執行指令碼後發現過一段時間指令碼的速度下降非常厲害,到了一次一秒。於是開始查詢原因。先展示我的指令碼:
import os,glob
import numpy as np
import cv2
import time
import gc
import sys
import subprocess
pae =
2path =
"d:\\data\\div2k_clip_128\\raw\\"
sim_path =
"d:\\data\\div2k_clip_128\\gray\\"
aim_path =
"d:\\data\\div2k_clip_128\\dat\\"
+str
(pae)
+"\\"
img_data = os.listdir(path)
for img in img_data:
if os.path.exists(os.path.join(aim_path,img[:-
4]+".dat"))
:continue
img_tmp = cv2.imread(sim_path+img[:-
4]+".png",0
) rows, cols = img_tmp.shape
rets = os.system(
"calic8e.exe"
+" "
+str
(path)
+str
(img)
+" "
+str
(rows)
+" "
+str
(cols)
+" 8 "
+str
(pae)
+" "
+aim_path+
str(img[:-
4])+
".dat"
)print
(str
(img)
+"====>"
+str
(img[:-
4])+
".dat"
)# time.sleep(0.1)
分析**後發現主要執行**就兩個:1.opencv讀圖;2.os.system命令列執行。
首先分析是否為opencv的問題。將os.system注釋後執行指令碼,在資源管理器中發現記憶體比較穩定。
上圖是含有os時執行的記憶體監控。
上圖為注釋os後執行時的記憶體監控。
經過簡單分析後得知是os.system的原因。
由於本人暫時沒找到os.system關於延時強制關閉程序的相關介紹,所以改用subprocess。繼續執行**發行仍然有問題。開啟資源監視器後發現系統有大量死程序來不及關閉。
上圖灰色程序即是我指令碼執行呼叫的exe。初步分析後得知是指令碼執行太快,導致計算機來不及刪除大量的exe。綜上,解決方法為新增短暫的延時,以減輕cpu負載。
本人採用延時0.1秒,可以看到,記憶體整體比較穩定,且cpu能夠有更多的時間刪除產生的程序。
無人蹭網為什麼WiFi越來越慢
家裡使用無線wifi的使用者會經常發現乙個問題,就是家裡的無線網會突然變得又卡又慢,而且也沒有別人蹭自己家的網,這是怎麼回事呢?其實原因很簡單,想知道的朋友程式設計客棧就快來看看下面的教程吧。其實方法很簡單,只需要動動手,重啟自己家的無線路由器即可。這是什麼原理呢?it人士表示,無線路由器由處理器 ...
WiFi網速越來越慢怎麼辦?WiFi提速的四種方法
wifi越用越慢?四招教你輕鬆提高wifi網速 一般來說,wifi越用越慢,主要有以下4種情況,大家不妨對號入座,找到相信的解決方法。一 路由器擺放位置不正確 為了讓自家的房間顯得乾淨 整潔,很多人會選擇將路由器放在不顯眼的地方,比如門後 牆角 電腦桌下面,這樣確實不影響美觀,但是網路訊號容易被門 ...
伺服器越來越慢的原因及解決辦法
隨著各種主機產品的推出,伺服器出現的問題各式各樣,由於虛擬主機都是同時執行,便會對伺服器產生過大的壓力,從而導致伺服器的速度越來越緩慢,下面和大家分享一下伺服器越來越慢的原因及解決辦法。1.虛擬主機占用資源過大,需要遷移虛擬主資源 隨著工作負載加大 虛擬機器數量激增,你可能會發現需要把乙個引起問題的...