1 คะแนน โดย GN⁺ 2023-08-19 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Global Interpreter Lock (GIL) ของ Python เป็นอุปสรรคสำคัญที่ขัดขวางการเพิ่มประสิทธิภาพของโปรแกรมที่ใช้หลายเธรด
  • ในเดือนตุลาคม 2021 Sam Gross ได้เปิดตัวเวอร์ชันพิสูจน์แนวคิดของ Python ที่ไม่มี GIL แต่แม้ช่วงแรกจะได้รับการตอบรับอย่างตื่นเต้น ก็แทบไม่มีความคืบหน้าครั้งใหญ่นานกว่าหนึ่งปี
  • ขณะนี้ Python Steering Council ได้ประกาศความตั้งใจที่จะผสานฟีเจอร์ no-GIL เข้ามา
  • โครงการ Faster CPython ซึ่งเริ่มขึ้นในช่วงกลางปี 2021 มุ่งเน้นการปรับปรุงประสิทธิภาพแบบเธรดเดี่ยวของอินเทอร์พรีเตอร์ Python
  • ในงาน PyCon ปีนี้ สมาชิกสองคนของทีม Faster CPython ได้นำเสนอกลยุทธ์ที่ใช้เพื่อเพิ่มประสิทธิภาพของอินเทอร์พรีเตอร์
  • ในเดือนมกราคม 2023 Łukasz Langa ผู้พัฒนาหลัก ได้เผยแพร่ PEP 703 ฉบับแรก ("การใช้ Global Interpreter Lock แบบเลือกได้ใน CPython") ซึ่งเขียนโดย Gross
  • ชุมชน Python ต้องการหลีกเลี่ยงการเปลี่ยนผ่านอันสับสนจาก Python 2 ไป Python 3 การเปลี่ยนแปลงใด ๆ เพื่อเอา GIL ออกจะต้องเข้ากันได้กับโค้ดที่ไม่ได้เตรียมตัวสำหรับสิ่งนี้
  • เมื่อวันที่ 14 มิถุนายน ทีม Faster CPython ได้เพิ่มแรงกดดันให้มีการตัดสินใจเกี่ยวกับฟีเจอร์ no-GIL
  • เมื่อวันที่ 28 กรกฎาคม Thomas Wouters สมาชิกสภาได้ประกาศว่าสภาได้ยอมรับ PEP 703 แล้ว แต่รายละเอียดของการยอมรับยังอยู่ระหว่างการปรับให้ลงตัว
  • แผนคือการนำอินเทอร์พรีเตอร์เวอร์ชัน no-GIL เข้ามาก่อน เพื่อระบุองค์ประกอบที่ยังขาดทั้งหมด จากนั้นจึงแก้ไข และทำให้ no-GIL กลายเป็นค่าเริ่มต้นและเวอร์ชันสุดท้ายของ Python
  • คาดว่าการเปลี่ยนผ่านไปยังเวอร์ชัน no-GIL จะใช้เวลาราว 5 ปี และมีคำมั่นว่าจะไม่ทำผิดซ้ำแบบในอดีต
  • บทความนี้อภิปรายวิธีใช้การเขียนโปรแกรมแบบขนานของ .NET เพื่อเร่งลูป for/foreach เมื่อมีข้อมูลที่ "แบ่งงานได้อย่างน่าอับอาย"
  • บทความนี้อภิปรายถึงความเป็นไปได้ในระยะยาวของการคงประสิทธิภาพแบบเธรดเดียวของ Python โดยบางส่วนมองว่าภาระส่วนเกินที่หลีกเลี่ยงไม่ได้และความซับซ้อนที่เพิ่มขึ้นจะทำให้ประสิทธิภาพลดลงในที่สุด
  • บทความนี้ทบทวนการเปลี่ยนผ่านจาก Python 2 ไป Python 3 ซึ่งทั้งสองเวอร์ชันไม่เข้ากัน
  • ผู้เขียนโต้แย้งว่าผลกระทบจากการที่ Python 3 ไม่เข้ากันกับ Python 2 นั้นมีบางคนคาดการณ์ไว้แล้ว ซึ่งตรงข้ามกับความเข้าใจที่แพร่หลาย และได้แชร์ลิงก์ไปยังบล็อกโพสต์จากปี 2007
  • ผู้เขียนเน้นย้ำความสำคัญของบทเรียนที่ได้จากการเปลี่ยนผ่านจาก Python 2 ไป Python 3 และย้ำเรื่องนี้เพื่อหลีกเลี่ยงปัญหาคล้ายกันในอนาคต
  • บทความนี้สรุปด้วยการยอมรับวิสัยทัศน์ล่วงหน้าของผู้ที่คาดการณ์ความท้าทายของการเปลี่ยนผ่านจาก Python 2 ไป Python 3

1 ความคิดเห็น

 
GN⁺ 2023-08-19
ความคิดเห็นจาก Hacker News
  • การพูดคุยเกี่ยวกับบทความว่าด้วยการถอด Global Interpreter Lock (GIL) และโครงการ CPython ที่เร็วขึ้น
  • ผู้แสดงความคิดเห็นบางส่วนเชื่อว่าบทความไม่ได้เน้นย้ำข้อดีของการถอด GIL อย่างเพียงพอ และเอนเอียงไปทางฝั่ง "ต่อต้าน GIL" มากกว่า
  • งานในโครงการ no-GIL ของ Sam Gross ได้รับคำชื่นชมในด้านคุณภาพสูงและการนำมาซึ่งประสิทธิภาพที่ดีขึ้น
  • ชุมชนแสดงความสนใจต่อโครงการนี้อย่างมาก และคณะกรรมการกำกับดูแลมีแผนจะรับ PEP 703 ซึ่งเป็นข้อเสนอที่เกี่ยวข้องกับโครงการนี้
  • ผู้แสดงความคิดเห็นบางส่วนแสดงความกังวลว่าการถอด GIL อาจส่งผลเสียต่อโค้ด Python แบบมัลติเธรด
  • การตัดสินใจเดินหน้าโครงการในโหมดทดสอบดูสมเหตุสมผล แต่ก็มีความกังวลว่าอาจต้องใช้ทรัพยากรมากขึ้นหากเกิดบั๊กหรือความยากลำบากต่าง ๆ
  • ผู้แสดงความคิดเห็นบางส่วนเชื่อว่าการถอด GIL เป็นความผิดพลาด เพราะอาจทำให้เกิดค่าเสียด้านประสิทธิภาพและแย่งโอกาสในการปรับปรุงด้านอื่นที่เป็นไปได้
  • คนอื่น ๆ เสนอให้ให้ความสำคัญกับประสิทธิภาพแบบเธรดเดียว และเพิ่ม virtual process ที่มีกลไกชัดเจนสำหรับการแชร์หน่วยความจำ
  • การผลักดันโครงการของ Sam Gross ได้รับคำชื่นชม และแม้เส้นทางสู่ Python แบบ no-GIL จะยาวนานและยากลำบาก แต่ก็ดูเป็นพัฒนาการในเชิงบวก
  • มีความกังวลเกี่ยวกับการรับประกันความถูกต้องของโค้ดเบสที่มีอยู่ และภาระการบำรุงรักษาที่เพิ่มขึ้นจากการทำให้ GIL/no-GIL เป็นสวิตช์ตอนคอมไพล์
  • ชุมชน Python ได้รับคำชื่นชมเรื่องความโปร่งใสและธรรมาภิบาลที่ดี แต่ก็มีเสียงเรียกร้องให้ได้รับการสนับสนุนจากอุตสาหกรรมเทคโนโลยีมากขึ้น เมื่อพิจารณาจากคุณค่าที่อุตสาหกรรมได้รับจาก Python
  • ผู้แสดงความคิดเห็นบางส่วนตั้งคำถามว่ายอมรับได้หรือไม่ที่โค้ดแบบเธรดเดียวอาจช้าลง 15-20% อันเป็นผลจากโครงการนี้