Python Interpreter ใช้พลัง CPU 12% เท่านั้น


26

ฉันใช้ python บน ubuntu สำหรับการวิเคราะห์ข้อความ แม้จะมีปริมาณงานที่รุนแรง แต่โปรแกรมกำลังใช้งาน CPU ดังที่แสดงในหน้าจอระบบ

ฉันเปลี่ยนลำดับความสำคัญของโปรแกรมจากNormalเป็นVery Highแต่ไม่มีผลใด ๆ

การ จำกัด ปริมาณการใช้ CPU ที่โปรแกรมไพ ธ อนของฉันสามารถรับได้คืออะไรและฉันจะเปลี่ยนแปลงได้อย่างไรเพื่อให้โปรแกรมสามารถใช้พลังงาน cpu มากขึ้น?

คำตอบ:


73

ฉันคิดว่าคุณมี CPU ที่มี 8 คอร์เสมือน (quad-core ที่มีเธรดไฮเปอร์เธรด) นั่นหมายถึงหนึ่งเธรด CPU ที่โหลดเต็ม / คอร์เสมือนจริงเท่ากับโหลดทั้งหมด 12.5%

Python interpreter เป็นแอปพลิเคชั่นที่ทำงานเป็นกระบวนการเดียวโดยค่าเริ่มต้นดังนั้นจึงไม่สามารถใช้ประโยชน์จากแกนประมวลผลเสมือนมากกว่าหนึ่งแกนได้ แม้ว่ารหัสที่คุณทำงานกับมันใช้ multithreading จะยังคงใช้เพียงหนึ่งด้าย CPU / หลักเสมือนเพราะGIL (ล็อคล่ามทั่วโลก)

เฉพาะเมื่อโปรแกรม Python ของคุณใช้การประมวลผลหลายขั้นตอนซึ่งในความเป็นจริงแล้วจะเริ่มต้นตัวแปล Python หลายอินสแตนซ์และอนุญาตให้โปรแกรมเหล่านั้นทำงานของคุณขนานกันอย่างแท้จริงคุณสามารถใช้ประโยชน์จากคอร์เสมือน / CPU (ตามที่ @SargeBorsch ชี้ให้เห็นในความคิดเห็นของเขายังมีวิธีการขั้นสูงบางอย่างเพื่อให้บรรลุสิ่งนี้โดยไม่ต้องมีการประมวลผลหลายอย่าง แต่โดยปกติแล้วไม่ใช่สิ่งที่คุณเขียนเองอย่างรวดเร็ว)


ที่จริงแล้วสมเหตุสมผลมาก ใช่ฉันมี quad-core ที่มี 4 คอร์ (8 คอร์เสมือน) Ty
Matthias Herrmann

9
@MatthiasHerrmann คุณสามารถพิจารณาการตรวจสอบระบบเพื่อแสดงให้คุณเห็นว่า CPU แต่ละตัวนั้นทำงานเป็นเปอร์เซ็นต์ ด้วยวิธีนี้คุณจะเห็นเพียง 1 ใน 8 ซีพียูที่ 100% ต่อไปนี้เป็นหัวข้อหนึ่งใน AU ในหัวข้อ: เทียบเท่า“ Gadget” ของ Windows (สำหรับการใช้งาน wifi และ cpu)
WinEunuuchs2Unix

7
ไม่เป็นความจริงมันเป็นไปได้ที่จะใช้คอร์ทั้งหมดจากกระบวนการไพ ธ อนเดียวก็ได้ เพียงแค่ต้องการเรียกรหัส C และปล่อย GIL และห้องสมุดที่มีอยู่หลายแห่งก็ทำเช่นนั้น (ตัวอย่างเช่น)
Sarge Borsch

2
หรือใช้JythonหรือIronPythonซึ่งไม่มี GIL
หยุดทำร้ายโมนิก้า

19

ความเป็นไปได้อื่นที่มีโอกาสน้อยกว่าในกรณีนี้คือโปรแกรมนั้นถูกผูกไว้กับดิสก์นั่นคือกำลังอ่านและเขียนไปยัง / จากดิสก์ที่ช้าและ CPU กำลังรอดิสก์


5
ลองiotopตรวจสอบโปรแกรมที่เชื่อมโยงกับ iowait
cat

1
หรือรหัสตัวเองเป็นแบบซิงโครนัสและการบล็อก
Zydnar

นั่นคือความผิดพลาดของฉันขอบคุณมาก
Fipsi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.