Python防止電腦自動休眠:用 pyautogui + threading 輕鬆做到 pyautogui.move(1, 0) #滑鼠右移1畫素; pyautogui.press(‘f15’) #按虛擬按鍵F15; pyautogui.screenshot() #截圖不存檔; t= threading.Thread ( target=prevent_sleep, daemon=True) ; t.start()

加入好友
加入社群
Python防止電腦自動休眠:用 pyautogui + threading 輕鬆做到 pyautogui.move(1, 0) #滑鼠右移1畫素; pyautogui.press('f15') #按虛擬按鍵F15; pyautogui.screenshot() #截圖不存檔; t= threading.Thread ( target=prevent_sleep, daemon=True) ; t.start() - 儲蓄保險王

在執行長時間自動化任務(例如模型訓練、爬蟲、資料處理)時,
電腦若自動進入休眠,常常會造成工作中斷。
本篇教學帶你用 Python 的 pyautogui 搭配 threading
快速打造一個「滑鼠自動移動」工具,讓你的電腦不會自動睡著!


目錄

  1. 為什麼要自動移動滑鼠?
  2. 安裝 pyautogui 套件
  3. threading 是什麼?為什麼要用?
  4. 防休眠腳本原理與寫法
  5. 完整範例程式碼解析
  6. 常見問題與注意事項
  7. 結語

為什麼要自動移動滑鼠?

多數作業系統會在一段時間無操作後:

  • 熄螢幕
  • 進入待機/休眠
  • 啟動螢幕保護程式

長時間運算或自動化時,這些「貼心」設計反而會中斷工作。
最簡單的解法:讓滑鼠定時自動動一下


安裝 pyautogui 套件

pip install pyautogui

threading 是什麼?為什麼要用?

什麼是 threading?

  • threading 是 Python 內建的多執行緒模組。
  • 允許你同時在同一個程式裡執行多個「任務」。
  • 這些「任務」叫做執行緒(thread)

為什麼要用 threading?

  • 如果你直接在主程式用 while True 做防休眠,主程式就卡住,不能做其他事
  • 用 threading,可以讓「自動移動滑鼠」這件事在背景執行
    而你的主程式(如資料處理、模型訓練)可以同時進行,互不干擾

關鍵語法說明

import threading

t = threading.Thread(target=prevent_sleep, daemon=True)
t.start()
  • target=prevent_sleep:指定執行緒要做的「任務」是哪個函數。
  • daemon=True:設為「守護執行緒」,主程式結束時它會自動關掉,不會殘留。
  • t.start():真正啟動這個執行緒。

防休眠腳本原理與寫法

核心思路:

  • 每隔一段時間自動移動滑鼠一點點(1像素),
  • threading 讓它在背景一直執行,
  • 主程式同時可以繼續運作!

完整範例程式碼解析

import pyautogui
import time
import threading
# 禁用安全機制不推薦
#  import pyautogui 後添加
#pyautogui.FAILSAFE = False
"""
PyAutoGUI 有一個內建的安全機制
當滑鼠游標移動到螢幕角落時通常是左上角),
它會觸發 `FailSafeException` 
以停止所有自動化操作
這個安全機制是為了防止自動化腳本失控
讓您有機會通過手動將滑鼠移到角落來中斷腳本
"""

def prevent_sleep(interval=60):
    """
    每 interval 秒移動一下滑鼠,防止電腦自動休眠
    """
    while True:
        pyautogui.move(1, 0)   # 向右移動1像素
        pyautogui.move(-1, 0)  # 再移回來
        #pyautogui.press('f15') #模擬按F15的虛擬鍵盤更安全
        #pyautogui.screenshot() #截圖但不存檔 
        #pyautogui.screenshot('screenshot.png') #截圖存檔
        time.sleep(interval)    # 等待 interval 

# 這一行就是關鍵啟動防休眠的背景執行緒
t = threading.Thread(target=prevent_sleep, daemon=True)
t.start()
# daemon=True 代表主程式結束時自動關閉這個防休眠執行緒

# 以下是你的主程式可以是資料處理模型訓練等
for i in range(5):
    print(f"主程式正在執行第 {i+1} 次")
    time.sleep(90)  # 模擬長時間任務

移動滑鼠防休眠的話,
有可能觸發
pyautogui.FailSafeException:
PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen.

Python防止電腦自動休眠:用 pyautogui + threading 輕鬆做到 pyautogui.move(1, 0) #滑鼠右移1畫素; pyautogui.press('f15') #按虛擬按鍵F15; pyautogui.screenshot() #截圖不存檔; t= threading.Thread ( target=prevent_sleep, daemon=True) ; t.start() - 儲蓄保險王

背景執行的防休眠程式雖然FailSafeException
但不影響主程式執行
更安全的防休眠:
pyautogui.press(‘f15’) #模擬按F15的虛擬鍵盤更安全
pyautogui.screenshot() #截圖但不存檔

部分code:

Python防止電腦自動休眠:用 pyautogui + threading 輕鬆做到 pyautogui.move(1, 0) #滑鼠右移1畫素; pyautogui.press('f15') #按虛擬按鍵F15; pyautogui.screenshot() #截圖不存檔; t= threading.Thread ( target=prevent_sleep, daemon=True) ; t.start() - 儲蓄保險王

重點整理:

  • threading.Thread(target=prevent_sleep, daemon=True)
    prevent_sleep 這個功能丟到背景執行,不會卡住主程式。
  • daemon=True:如果主程式結束,防休眠執行緒也會自動結束。
  • 守護線程 (daemon=True):
  • 在背景運行
  • 當主程式結束時自動終止
  • 適合用於服務類任務,如防休眠功能
  • 非守護線程 (daemon=False):
  • 默認設置
  • 會阻止程式結束,直到線程完成
  • 適合必須完成的關鍵任務

常見問題與注意事項

  • pyautogui.move(1, 0) 的「1」單位是什麼?
    → 答:螢幕上的 1 個像素(pixel)。
  • 這樣會不會打斷我滑鼠操作?
    → 幾乎感覺不到,但如果你正在快速移動滑鼠,可能有極小干擾。
  • 怎麼結束?
    → 關掉 Python 視窗,或 Ctrl+C。

結語

用 Python 的 pyautogui 搭配 threading
只要幾行程式就能防止電腦自動休眠。
把防休眠功能寫成背景執行緒,可讓你的主要程式同時運作,
再也不用擔心長時間自動化會被中斷!


推薦hahow線上學習python: https://igrape.net/30afN

加入好友
加入社群
Python防止電腦自動休眠:用 pyautogui + threading 輕鬆做到 pyautogui.move(1, 0) #滑鼠右移1畫素; pyautogui.press('f15') #按虛擬按鍵F15; pyautogui.screenshot() #截圖不存檔; t= threading.Thread ( target=prevent_sleep, daemon=True) ; t.start() - 儲蓄保險王

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *