Otomatik Pc Kapatıcı

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 :slight_smile:

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.

3 Beğeni

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...
4 Beğeni

cevaplarınız için çok teşekkür ederim :slight_smile:

ihtiyaç duyduğun için yazıyorsan bu programı = windows’un zaten böyle bir özelliği mevcut;

bkz: https://pchocasi.com.tr/windows-10-bilgisayari-otomatik-kapatma-68058/

sadece öneri olarak görün bu bilgiyi.

vakti zamanında böyle birşey vardı işini görürse

Merhabalar,şu kod işinizi Windows’ta görecektir :

import os

cevap = input("Bilgisayarı kapatmak istiyor musunuz ? (e/h): ")

if cevap == "h":
    exit()

else:
    os.system("shutdown /s /t 1")

Merhaba,
biraz gereksiz gibi görünse de threading modülünün Timer sınıfı da incelenebilir.