• 06-09-2022, 11:40:49
    #1
    Merhaba arkadaşlar
    Bir süredir python ile ilgileniyorum fakat yazdığım kodlar en fazla %10-15 arası işlemci kullanıyor.
    Ben daha fazla işlemci kullanım daha hızlı işlemler yapmak istiyorum nasıl yaparım acaba?
  • 06-09-2022, 11:41:54
    #2
    o işlemciyle değil ram ve diskinizle alakalı.
  • 06-09-2022, 11:43:21
    #3
    arenpi adlı üyeden alıntı: mesajı görüntüle
    o işlemciyle değil ram ve diskinizle alakalı.
    Nasıl yapabilirim peki acaba orada da fazla kaynak tüketmiyor.
  • 06-09-2022, 13:20:01
    #4
    Hocam yazılımcılar normalde daha az işlemci kullanarak daha fazla işlem yapmaya çalışıyorlar siz tam tersini istiyorsunuz garip değil mi ? multiprocessing ,Multi threading inceleyin farklı çekirdekleri kullanarak aynı anda daha fazla işlem yapmayı amaçlıyorsanız. Tek çekirdek üzerinde paralel işlem çalıştırmak için threading kütüphanesine göz atın
  • 06-09-2022, 13:22:32
    #5
    msn560 adlı üyeden alıntı: mesajı görüntüle
    Hocam yazılımcılar normalde daha az işlemci kullanarak daha fazla işlem yapmaya çalışıyorlar siz tam tersini istiyorsunuz garip değil mi ? multiprocessing ,Multi threading inceleyin daha fazla çekirdek kullanarak aynı anda daha çok işlem yapmayı amaçlıyorsanız
    Kullanacağım sunucu da sadece bu çalışacak ve ben tüm çekirdekleri tek işlem için çalıştırmak istiyorum.
    Çünkü geniş bir ses işleme işlemi yapıyorum. İşlediğim dosya boyutları birer saatlik ve bir saatlik dosyayı 2 saate işliyor neredeyse ram ve işlemci de %15 i geçmiyor.
    Ben gerekirse %70-80 leri kullansın her ikisinde de ama işlemimi hızlı yapsın istiyorum.
  • 06-09-2022, 13:30:48
    #6
    Boştaki çekirdekleri kullanmak için "multiprocessing" ile çalıştırabilirsiniz hocam. Farklı çekirdekler de Paralel çalışacağı için iletişimi iyi sağlamanız lazım. threading olsa kolay da Multi biraz karışık
  • 06-09-2022, 13:35:28
    #7
    msn560 adlı üyeden alıntı: mesajı görüntüle
    Boştaki çekirdekleri kullanmak için "multiprocessing" ile çalıştırabilirsiniz hocam. Farklı çekirdekler de Paralel çalışacağı için iletişimi iyi sağlamanız lazım. threading olsa kolay da Multi biraz karışık
    Yeni olduğum için hocam tam anlayamadım.
    Kodum bu şekilde.

    import os, sys, timeit, datetime
    from pydub import AudioSegment
    from pydub.silence import split_on_silence
    
    print("Program Başlama: ")
    print(datetime.datetime.now())
    
    #SABİTLER
    start = timeit.default_timer()
    mp3ismi = "20220509120001"
    #SABİTLER
    
    #FONKSİYONLAR
    if getattr(sys, 'frozen', False):
        dosyaYolu = os.path.dirname(sys.executable)
    elif __file__:
        dosyaYolu = os.path.dirname(__file__)
    #FONKSİYONLAR
    
    #KLASÖR OLUŞTURMA
    if os.path.exists(os.path.join(dosyaYolu,mp3ismi))==False:
        os.mkdir(os.path.join(dosyaYolu,mp3ismi))
    #KLASÖR OLUŞTURMA
    
    #DOSYA YOLU BELİRLEME
    kaydedilecekKlasor = os.path.join(dosyaYolu,mp3ismi)
    mp3Dosyasi = os.path.join(dosyaYolu, mp3ismi+".mp3")
    #DOSYA YOLU BELİRLEME
    
    #SES İŞLEMİ
    sound = AudioSegment.from_mp3(mp3Dosyasi)
    chunks = split_on_silence(sound, min_silence_len=5000, silence_thresh=-45, keep_silence=1000, seek_step=1)
    for i, chunk in enumerate(chunks):
        chunk.export(os.path.join(kaydedilecekKlasor,"cikti{0}.mp3").format(i), format="mp3")
    #SES İŞLEMİ
    
    stop = timeit.default_timer()
    print('Time: ', (stop - start) / 60)  
    print("Program Bitiş: ")
    print(datetime.datetime.now())
    Ben "#SES İŞLEMİ" diye belirttiğim alanı nasıl daha hızlı çalıştırabilirim? Ya da çalıştırabilir miyim ?
  • 06-09-2022, 14:05:23
    #8
    Hocam şuanda mobilim size kod anlamında yardımcı olamam fakat anladığım kadarıyla ses dosyasını içindeki sessiz kısımlara göre parçalıyorsunuz. Aklıma gelen ilk yöntem önce ses dosyasını belirli bi saniyeden 2 ye parçalayıp sonra fonksiyon içine alarak dosya isimlerini multiprocessing Target ile fonksiyona göndermek ve başlatmak gerekiyor yada benzer bulduğum örnek: https://stackoverflow.com/questions/...-a-loop-python
  • 06-09-2022, 14:32:22
    #9
    msn560 adlı üyeden alıntı: mesajı görüntüle
    Hocam şuanda mobilim size kod anlamında yardımcı olamam fakat anladığım kadarıyla ses dosyasını içindeki sessiz kısımlara göre parçalıyorsunuz. Aklıma gelen ilk yöntem önce ses dosyasını belirli bi saniyeden 2 ye parçalayıp sonra fonksiyon içine alarak dosya isimlerini multiprocessing Target ile fonksiyona göndermek ve başlatmak gerekiyor yada benzer bulduğum örnek: https://stackoverflow.com/questions/...-a-loop-python
    Sorunu çözdüm hocam ben split_on_silence fonksiyonunda bir hata yapıyormuşum. seek_step methodunu 1ms tuttuğum için işlem uzun sürüyormuş onu 10000ms yaptım işlem süresi 1 dakikaya düştü bu da bana yeterli bir süre.
    İlginiz için teşekkürler yine de