python指令碼執行越來越慢

2021-09-29 23:41:50 字數 1864 閱讀 5506

近日需要處理大批量影象資料,執行指令碼後發現過一段時間指令碼的速度下降非常厲害,到了一次一秒。於是開始查詢原因。先展示我的指令碼:

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.虛擬主機占用資源過大,需要遷移虛擬主資源 隨著工作負載加大 虛擬機器數量激增,你可能會發現需要把乙個引起問題的...