Python เป็นภาษาโปรแกรมระดับสูง
ล่าสุดมีข่าวออกมาว่า คณะกรรมการขับเคลื่อนโครงการ Python ได้ประกาศความปรารถนาที่จะอนุมัติ ข้อเสนอส่วนขยายภาษา Python «PEP-0703″ทำให้การล็อกล่ามส่วนกลางเป็นตัวเลือกใน CPython และกำหนดโหมดคอมไพล์แบบฝังของ CPython โดยไม่มี Global Interpreter Lock (GIL)
เป๊ป-0703 กำหนดให้หยุดใช้ GIL เป็นค่าเริ่มต้น แต่เพิ่มตัวเลือกการสร้าง “–sin-gil” เพื่อปิดการใช้งาน คุณเป็นอย่างไรโหมดใหม่คาดว่าจะแก้ปัญหาด้วยการขนาน ของการทำงานบนระบบมัลติคอร์ ซึ่งเกิดจากการที่โกลบอลล็อกไม่อนุญาตให้เข้าถึงออบเจกต์ที่ใช้ร่วมกันแบบขนานจากเธรดที่ต่างกัน
เป็นที่กล่าวถึงในระยะยาว (หลังจาก 5 ปี) ล่ามมีแผนที่จะเปลี่ยนตามค่าเริ่มต้นเป็นเฉพาะในโหมดไม่ล็อกส่วนกลางเท่านั้นในขณะเดียวกันก็เลิกสนับสนุนการคอมไพล์ด้วย GIL
ขอขอบคุณทุกท่านที่ตอบแบบสำรวจเกี่ยวกับข้อเสนอที่ไม่มี GIL เป็นที่ชัดเจนว่าความรู้สึกทั่วไปเป็นไปในเชิงบวก ทั้งสำหรับแนวคิดทั่วไปและโดยเฉพาะอย่างยิ่งสำหรับ PEP 703 คณะกรรมการยังมีความเห็นเป็นบวกต่อทั้งสองอย่าง เราตั้งใจที่จะยอมรับ PEP 703 แม้ว่าเราจะยังหารายละเอียดของการยอมรับอยู่
ดังที่เราได้ดำเนินการมาแล้วสองสามครั้ง เราต้องการสื่อสารความตั้งใจของเราที่จะยอมรับ PEP พร้อมกับความคิดปัจจุบันของเราเกี่ยวกับรายละเอียดที่เกี่ยวข้องกับการยอมรับ
นอกเหนือจากนั้น, มีการกล่าวถึงการเปลี่ยนแปลงที่มีแผนจะดำเนินการในสามขั้นตอน ซึ่งมีทั้งระยะสั้น ระยะกลาง และระยะยาว กำหนดว่า ในระยะแรก การปิดใช้งาน GIL โดยค่าเริ่มต้นนั้นไม่สามารถทำได้ เนื่องจากค่าใช้จ่ายที่เกี่ยวข้องกับการเปลี่ยนแปลงของตัวรวบรวมขยะ ระบบการจัดการหน่วยความจำ และพื้นฐานสำหรับการจัดระเบียบล็อค ตัวอย่างเช่น เนื่องจากการใช้การนับการอ้างอิงสำหรับการแยกเธรด จึงมีประสิทธิภาพลดลงสำหรับสคริปต์แบบเธรดเดียว (ในชุดทดสอบประสิทธิภาพ pyperformance 10%) ในเวลาเดียวกัน อาจจำเป็นต้องปิดใช้งาน GIL ในการคำนวณทางวิทยาศาสตร์ ซึ่งการขาดการขนานกันเป็นปัญหาที่ร้ายแรงกว่าความเร็วเชิงเส้นของการดำเนินการโค้ด
ในขั้นตอนที่สอง โดยทั่วไปการยืนยันจะรอ และได้รับการสนับสนุนจากชุมชนอย่างเพียงพอ การใช้ "non-GIL เป็นไปได้" และตรวจสอบให้แน่ใจว่ารองรับการสร้าง GIL-less แต่ไม่ใช่ค่าเริ่มต้น
ในขั้นตอนสุดท้าย no-GIL จะเป็นค่าเริ่มต้นอยู่แล้ว และร่องรอยใดๆ ของ GIL จะถูกลบออก (โดยไม่ทำลายความเข้ากันได้แบบย้อนกลับโดยไม่จำเป็น)
เป็นที่สังเกตว่า การทำงานเพื่อย้ายออกจาก GIL จะทำอย่างระมัดระวังเพื่อไม่ให้ทำผิดซ้ำ เกิดอะไรขึ้นเมื่อโปรโมต งูหลาม 3: บิลด์ที่ไม่ใช่ GIL จะต้องรองรับความเข้ากันได้กับ Python เวอร์ชันเก่า และการเปลี่ยนแปลงโค้ดของบุคคลที่สามที่จำเป็นในการทำงานกับบิลด์ที่ไม่ใช่ GIL ควรใช้ได้กับบิลด์ GIL ด้วย
ไม่มีแผนที่จะจัดลำดับเวอร์ชันใหม่เป็น Python 4 สำหรับรุ่นที่ไม่ใช่ GIL เนื่องจากจะรักษาความเข้ากันได้ของ ABI
ตลอดกระบวนการ เรา (นักพัฒนาหลัก ไม่ใช่แค่ SC) จะต้องประเมินความคืบหน้าและลำดับเวลาที่แนะนำใหม่ เราไม่ต้องการให้สิ่งนี้กลายเป็นการต่อสู้ความเข้ากันได้แบบย้อนหลังอีกสิบปี และเราต้องการให้สามารถยกเลิก PEP 703 และหาวิธีแก้ไขอื่นได้หากดูเหมือนว่าจะกลายเป็นปัญหา ดังนั้น เราจำเป็นต้องตรวจสอบอย่างสม่ำเสมอว่าการทำงานอย่างต่อเนื่องนั้นคุ้มค่า
เราหวังว่าสิ่งนี้จะช่วยให้ความชัดเจนเกี่ยวกับอนาคตของ PEP ในขณะที่เราหารายละเอียดที่แน่นอนของการยอมรับ SC จะดำเนินการเพื่อสรุปผลการยอมรับในอีกไม่กี่สัปดาห์ข้างหน้า
ก่อนการเปลี่ยนไปใช้บิลด์ที่ไม่ใช่ GIL อย่างเต็มรูปแบบ เราวางแผนที่จะบรรลุการสนับสนุนชุมชนอย่างเต็มรูปแบบสำหรับบิลด์เหล่านี้ รวมถึงจัดหา C API และ Python API เพิ่มเติมเพื่อเปิดใช้งานมัลติเธรดที่ปลอดภัยในโค้ดที่มีอยู่
ในที่สุด ดังที่ได้กล่าวไปแล้ว คาดว่าการเปลี่ยนผ่านไปสู่ขั้นที่สามอาจเกิดขึ้นอย่างน้อย 5 ปี และวันที่น่าจะเป็นไปได้สำหรับ PEP-0703 คือการเปิดตัว Python 3.13 ซึ่งกำหนดไว้ในฤดูใบไม้ร่วงหน้า
ถ้าคุณเป็น สนใจที่จะทราบข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้คุณสามารถตรวจสอบรายละเอียด ในลิงค์ต่อไปนี้.