Arkadaşlar kullanmak için kendime bir otomatik pc kapatıcısı programı yazdım galiba kullandığım while döngüsünden dolayı CPU’ya sürekli yük biniyor. Programı çalıştırdığımda CPU kullanımı % 30’lara çıkıyor. Benzer programlarda böyle bir şey olmuyor. bu sorunu nasıl halledebilirim. kodlar aşağıda .
class Main_class() :
def __init__(self,secim,dakika,saat,ay):
self.secenek = secim
self.dakika = dakika
self.saat = saat
self.ay = ay
def zaman(self):
from datetime import datetime
from time import sleep
guncel_tarih = datetime.today()
if (guncel_tarih.month and guncel_tarih.hour and guncel_tarih.minute ) == (self.saat and self.dakika):
print(guncel_tarih.hour,guncel_tarih.minute)
print("İşleminiz Gerçekleşiyor...")
sleep(5)
if self.secenek == "1":
uygulanacak_islemler.bigisayarı_kapat()
elif self.secenek == "2":
uygulanacak_islemler.yeniden_baslat()
deger = True
else :
deger = False
return deger
class uygulanacak_islemler():
def bigisayarı_kapat():
from os import system
süre = 10
print("Bilgisayar {} sn içinde kapanacak".format(süre))
system("shutdown /s /t 10 ")
def yeniden_baslat():
from os import system
süre = 10
print("Bilgisayar {} sn içinde yeniden başlatılacak".format(süre))
system("shutdown /r /t 10 ")
def secim():
print("""
Saat ve Günü Giriniz
Bilgisayarınızı Kapatmak İstiyorsanız 1
Yeniden Başlatmak istiyorsanız 2 'ye Basınız
""")
saat = input("Saat'i Giriniz...")
dakika = int(input("Dakikayı Giriniz..."))
ay = int(input("Ayı Giriniz..."))
secim = str(input("Seciminizi giriniz "))
return saat,dakika,ay,secim
if name==“main”:
saat,dakika,ay,secim = secim()
while True :
a = Main_class(secim,dakika,saat,ay)
deger = a.zaman()
if deger == True :
break
Windows üzerine bir program yazacaksanız servisleri araştırmanızı öneririm
Yine de probleminizle ilgili şunu diyebilirim. While döngüsünde kısa bir süre bekleme yapmanız daha iyi olur. Ayrıca döngü içinde sürekli yeniden nesne oluşturuyorsunuz. Nesneyi dışarıda oluşturup kontrol işini bir fonksiyon ile yapsanız daha iyi olur. Ya da başka bir şey.
Birkere seçim bir defa yapıldıktan sonra bir defa daha değişmeyeceği için, yani işlemin zamanı sabit kalacağı için bir while döngüsü ile her an kontrol yapmanız saçma. time.sleep fonksiyonunu kullanmanız daha doğru olacaktır. Bu fonksiyon CPU yememektedir, yani programınız istediğiniz süre boyunca gerçekten durmaktadır.
from time import sleep
saat = input("Saat'i Giriniz...")
dakika = int(input("Dakikayı Giriniz..."))
secim = str(input("Seciminizi giriniz "))
# eğer inputlar tarih olarak alınıyorsa datetime kullanarak tarihin şu anki tarihden ne kadar uzakta olduğunu tekrar 'saat' ve 'dakika' değişkenine atayın.
toplam_saniye = saat*3600 + dakika*60
sleep(toplam_saniye) # toplam saniye boyunca program duruyor ve CPU yemiyor.
# işlemler...