Python Tercüman sadece% 12 CPU Power kullanıyor


26

Metin analizi için ubuntu'da python kullanıyorum. Ciddi miktarda çalışmaya rağmen, program, sistem monitöründe gösterildiği gibi CPU kullanımını% 12 oranında sabit tutar.

Ben gelen programın önceliği değişti Normaletmek Very Highama hiçbir etkisi olmadı.

Python programımın alabileceği CPU kullanım miktarını sınırlayan nedir ve bunu nasıl değiştirebilirim ki program daha fazla cpu gücünden faydalanabilir mi?

Yanıtlar:


73

Sanırım 8 sanal çekirdekli bir işlemciniz var (muhtemelen hiper iş parçacıklı dört çekirdekli)? Bu, bir tam yüklü CPU iş parçacığı / sanal çekirdeğin, toplam yükün% 12.5'ine eşit olduğu anlamına gelir.

Python yorumlayıcısı, varsayılan olarak yalnızca tek bir işlem olarak çalışan ve bu nedenle birden fazla sanal çekirdekten yararlanamayan bir uygulamadır. Çalıştığınız kod çoklu okuma kullanıyor olsa bile, GIL (genel tercüman kilidi) nedeniyle hala yalnızca bir CPU iş parçacığı / sanal çekirdek kullanacaktır .

Yalnızca Python programınız çoklu işlemeyi kullanıyorsa , aslında Python yorumlayıcısının birden fazla örneğini başlatır ve görevlerinizi gerçekten paralel olarak yapmalarına izin verirse , birden fazla sanal çekirdek / CPU iş parçacığından yararlanabilirsiniz. (@SargeBorsch'un yorumunda da belirtildiği gibi, bunu çok işlemeli olmadan yapmanın bazı gelişmiş yolları da var, ancak bu normalde hızlı bir şekilde kendiniz yazdığınız bir şey değil.)


Bu aslında çok mantıklı. Evet 4 çekirdekli dört çekirdekli (8 sanal çekirdekli) yaşıyorum. Ty
Matthias Herrmann

9
@MatthiasHerrmann Her bir CPU'nun yüzde kaçının çalıştığını göstermek için bir sistem monitörü düşünebilirsiniz. Böylece 8 işlemciden sadece 1'inin% 100 olduğunu görebiliyordunuz. Konuyla ilgili AU'da bir konu var: Windows “aygıtlar” eşdeğeri (wifi ve işlemci kullanımı için)?
WinEunuuchs2Unix

7
Doğru değil, tek bir python işleminden elde edilen tüm çekirdeği kullanmak gayet iyi. Birinin sadece C kodunu çağırması ve GIL'yi serbest bırakması gerekiyor. Ve birçok mevcut kütüphane tam olarak bunu yapar (örneğin, uyuşuk).
Sarge Borsch

2
Veya GIL içermeyen Jythonveya kullanın IronPython.
Monica'ya Zarar Vermeyi Durdurun

19

Bu durumda daha az muhtemel olan bir başka olasılık, programın diske bağlı olmasıdır, yani yavaş olan diske okuyor / yazıyor ve CPU diski bekliyor.


5
iotopiowait'e bağlı programları izlemeye çalışın
cat

1
Veya kodun kendisi senkronize ve engelleyicidir.
Zydnar

Bu benim hatamdı çok teşekkürler
Fipsi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.