À©µµ¿ì ÀÚµ¿ Á¾·á ÇÁ·Î±×·¥À» ¸¸µé°í ½Í½À´Ï´Ù.
±Ùµ¥ Àü ÄÚµù 1µµ ¸ð¸¨´Ï´Ù ÇæÇæÇæ
±×·¡¼ ChatGTP¿¡°Ô ¹°¾îºÃ½À´Ï´Ù.
ÆÄÀ̽ãÀ¸·Î ´ÙÀ½°ú °°Àº ÇÁ·Î±×·¥À» ¸¸µé¾î Áà.
1) ƯÁ¤ ÇÁ·Î±×·¥À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
2) ÇØ´ç ÇÁ·Î±×·¥ÀÇ CPU»ç¿ë·®ÀÌ ÀÏÁ¤¼öÁØ ÀÌÇÏ·Î ³»·Á°¡°Ô µÇ¸é, À©µµ¿ì¸¦ Á¾·áÇÏ°Ô ÇÔ.
3) GUI·Î Á¶ÀÛ°¡´É.
±×·¨´õ´Ï ´ÙÀ½°ú °°ÀÌ ¾Ë·ÁÁֳ׿ä.
´ç½ÅÀÌ ¿äûÇÑ ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°Àº ±â´ÉÀ» °®Ãß°í ÀÖ¾î¾ß ÇÕ´Ï´Ù:
-
»ç¿ëÀÚ°¡ ƯÁ¤ ÇÁ·Î±×·¥À» ¼±ÅÃÇÒ ¼ö ÀÖ´Â ±â´É
-
¼±ÅÃÇÑ ÇÁ·Î±×·¥ÀÇ CPU »ç¿ë·®À» ¸ð´ÏÅ͸µÇÏ°í, ÀÏÁ¤ ¼öÁØ ÀÌÇÏ·Î ³»·Á°¥ ¶§ À©µµ¿ì¸¦ Á¾·áÇÏ´Â ±â´É
-
»ç¿ëÀÚ°¡ GUI¸¦ ÅëÇØ ÇÁ·Î±×·¥À» Á¶ÀÛÇÒ ¼ö ÀÖ¾î¾ß ÇÔ
ÀÌ·± ÇÁ·Î±×·¥À» ¸¸µé±â À§Çؼ´Â ¸î °¡Áö Python ¶óÀ̺귯¸®¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. Tkinter¸¦ ÀÌ¿ëÇÏ¿© GUI¸¦ ¸¸µé°í, psutil ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ¿© CPU »ç¿ë·®À» ¸ð´ÏÅ͸µÇÒ °ÍÀÔ´Ï´Ù. ¶ÇÇÑ subprocess ¸ðµâÀ» »ç¿ëÇÏ¿© ¼±ÅÃÇÑ ÇÁ·Î±×·¥À» ½ÇÇàÇÏ°í Á¾·áÇÒ °ÍÀÔ´Ï´Ù. ¾Æ·¡´Â ÀÌ·¯ÇÑ ¿ä±¸»çÇ×À» ÃæÁ·ÇÏ´Â °£´ÜÇÑ ¿¹Á¦ ÄÚµåÀÔ´Ï´Ù.
import tkinter as tk
import psutil
import subprocess
import time
class ProgramMonitor:
def __init__(self, program_path, cpu_threshold):
self.program_path = program_path
self.cpu_threshold = cpu_threshold
self.root = tk.Tk()
self.root.title("ÇÁ·Î±×·¥ ¸ð´ÏÅÍ")
self.label = tk.Label(self.root, text="ÇÁ·Î±×·¥ ¸ð´ÏÅ͸µ Áß...")
self.label.pack()
self.start_button = tk.Button(self.root, text="ÇÁ·Î±×·¥ ½ÃÀÛ", command=self.start_program)
self.start_button.pack()
self.stop_button = tk.Button(self.root, text="ÇÁ·Î±×·¥ Á¾·á", command=self.stop_program, state=tk.DISABLED)
self.stop_button.pack()
self.root.mainloop()
def start_program(self):
self.label.config(text="ÇÁ·Î±×·¥ ½ÇÇà Áß...")
self.process = subprocess.Popen(self.program_path)
self.start_button.config(state=tk.DISABLED)
self.stop_button.config(state=tk.NORMAL)
self.monitor_cpu()
def stop_program(self):
self.label.config(text="ÇÁ·Î±×·¥ Á¾·á Áß...")
self.process.terminate()
self.label.config(text="ÇÁ·Î±×·¥ Á¾·áµÊ")
self.start_button.config(state=tk.NORMAL)
self.stop_button.config(state=tk.DISABLED)
def monitor_cpu(self):
while True:
cpu_percent = psutil.cpu_percent(interval=1)
if cpu_percent < self.cpu_threshold:
self.label.config(text="CPU »ç¿ë·®ÀÌ ³Ê¹« ³·¾Æ À©µµ¿ì¸¦ Á¾·áÇÕ´Ï´Ù.")
self.root.after(2000, self.shutdown_windows) # 2ÃÊ ÈÄ À©µµ¿ì Á¾·á
break
time.sleep(1)
def shutdown_windows(self):
# À©µµ¿ì¸¦ Á¾·áÇÏ´Â ÄÚµå ÀÛ¼º
pass
if __name__ == "__main__":
program_path = "path_to_your_program.exe" # ½ÇÇàÇÒ ÇÁ·Î±×·¥ÀÇ °æ·Î
cpu_threshold = 10 # CPU »ç¿ë·®ÀÇ ÀÓ°è°ª (%)
monitor = ProgramMonitor(program_path, cpu_threshold)
ÀÌ Äڵ带 ½ÇÇàÇϸé GUI°¡ ³ªÅ¸³ª°í, "ÇÁ·Î±×·¥ ½ÃÀÛ" ¹öÆ°À» Ŭ¸¯ÇÏ¿© ¿øÇÏ´Â ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ¸é CPU »ç¿ë·®ÀÌ ¸ð´ÏÅ͸µµÇ°í, ¼³Á¤ÇÑ ÀÓ°è°ª ÀÌÇÏ·Î ³»·Á°¡¸é À©µµ¿ì°¡ Á¾·áµË´Ï´Ù. "ÇÁ·Î±×·¥ Á¾·á" ¹öÆ°À» Ŭ¸¯Çϸé ÇÁ·Î±×·¥À» Á¾·áÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Äڵ带 ¿øÇÏ´Â ´ë·Î ¼öÁ¤ÇÏ¿© »ç¿ëÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.
ÀÌÁ¨ ÀÌ°É ¾î¶»°Ô ÇØ¾ß µÇ³ª¿ä???