[英]How would I prevent a python script that loops forever from using all my ram?
我想自動化在游戲中單擊幾個按鈕的過程,所以我編寫了一個腳本來查找第一個按鈕並單擊它,然后單擊另外兩個。
import pyautogui as pag
import time
while True:
if Click("Replay") == True:
time.sleep(1)
Click("Continue")
time.sleep(1)
Click("Repeat")
time.sleep(1)
else:
time.sleep(5)
Click()
function 基本上接受一個字符串輸入並將其轉換為 input.png,將其與我擁有的按鈕的 png 匹配,然后單擊它。 如果它沒有找到它,它只是說它找不到它。
繼承人,以防你需要它:
def Click(image):
image = str(image)
location = pag.locateOnScreen(image + ".png")
if location != None:
point = pag.center (location)
coordsX, coordsY = point
pag.click(coordsX, coordsY)
print("Clicked %s" % (image))
return True
else:
print("Did not find %s Button" % (image))
我的最終目標是將它變成一個可執行文件,以便我可以將它發送給人們並且他們可以使用它,但我不希望它在運行它的計算機上浪費大量 memory。 我也不想增加它的等待時間,而且我相信我在某處看到它在 2GB 或其他東西后自行清除,但我不擅長編碼,我不希望它首先使用那么多內存. 我能做些什么來 A. 以較低的閾值清除它,或者 B. 首先讓它不使用那么多內存?
我之前做過類似的事情,使用 pyautogui。 即使在幾周后運行類似的代碼時,我也沒有看到任何性能問題。
您可能想先嘗試一下,因為我懷疑它會使用那么多 RAM。
對您的代碼進行一些優化/清理:
time.sleep(5)
不需要 else 。Click()
函數的 else 子句中添加return False
嗎?locateOnScreen
function 現在會引發錯誤,而不是返回None
,因此請考慮使用 try-except 塊。 (如果它沒有為您返回異常,請參閱此問題的已接受答案。)def Click(image):
image = str(image)
try:
pag.click(pag.locateCenterOnScreen(image + ".png"))
print("Clicked %s" % (image))
return True
except pag.ImageNotFoundException:
print("Did not find %s Button" % (image))
return False
我已經運行了這段代碼,它對我來說幾乎沒有使用 RAM。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.