Çoklu okumanın Python'da çalışıp çalışmadığı konusunda biraz kafam karıştı.
Bununla ilgili birçok soru olduğunu biliyorum ve çoğunu okudum, ama yine de kafam karıştı. Kendi deneyimlerimden biliyorum ve başkalarının kendi cevaplarını ve örneklerini burada StackOverflow'da yayınladığını gördüm ki, çoklu iş parçacığı gerçekten Python'da mümkündür. Öyleyse neden herkes Python'un GIL tarafından kilitlendiğini ve aynı anda yalnızca bir iş parçacığının çalışabileceğini söyleyip duruyor? Açıkça çalışıyor. Yoksa burada anlamadığım bir ayrım mı var?
Birçok poster / yanıtlayıcı, birden fazla çekirdek kullanılmadığı için iş parçacığı oluşturmanın sınırlı olduğunu belirtmeye devam ediyor. Ama yine de yararlı olduklarını söyleyebilirim çünkü eşzamanlı olarak çalışıyorlar ve böylece birleşik iş yükünü daha hızlı hallediyorlar. Demek istediğim, başka türlü neden bir Python iş parçacığı modülü olsa bile?
Güncelleme:
Şimdiye kadarki tüm cevaplar için teşekkürler. Anladığım kadarıyla çoklu iş parçacığı sadece bazı IO görevleri için paralel olarak çalışacak, ancak CPU'ya bağlı çoklu çekirdekli görevler için bir seferde yalnızca bir tane çalıştırabilir.
Bunun pratik anlamda benim için ne anlama geldiğinden tam olarak emin değilim, bu yüzden çoklu iş parçacığı ile okumak istediğim görev türüne bir örnek vereceğim. Örneğin, çok uzun bir dizge listesi üzerinden döngü yapmak istediğimi ve her liste öğesinde bazı temel dize işlemlerini yapmak istediğimi varsayalım. Listeyi bölersem, döngü / dize kodum tarafından işlenecek her bir alt listeyi yeni bir iş parçacığına gönderir ve sonuçları bir sıraya geri gönderirsem, bu iş yükleri yaklaşık olarak aynı anda çalışır mı? En önemlisi, bu teorik olarak betiği çalıştırmak için gereken süreyi hızlandıracak mı?
Başka bir örnek, PIL kullanarak dört farklı resmi dört farklı iş parçacığında oluşturabilir ve kaydedebilirsem ve bu, resimleri birbiri ardına işlemekten daha hızlı olabilir mi? Sanırım bu hız bileşeni, doğru terminolojiden ziyade gerçekten merak ettiğim şey.
Çoklu işlem modülünü de biliyorum, ancak şu anda ana ilgi alanım küçük-orta görev yükleri (10-30 saniye) ve bu yüzden çoklu kullanımın daha uygun olacağını düşünüyorum çünkü alt işlemlerin başlatılması yavaş olabilir.