Python 3.2 un GIL

Mazliet pārfrāzējot: programmētājam bija ātrdarbības problēma un viņš nespēja atrast risinājumu. “Zinu,” viņš teica, “es lietošu vairākus pavedienus.” Tagad programmētājam bija divas problēmas.

Ik pa brīdim uzrodas kāda diskusija par Python GIL likvidēšu. Tā ir “ļaunuma sakne”, kuras dēļ Python vairākpavedienu programmas nespēj izmantot vairākus procesorus, jo vienlaicīgi tiek izpildīta tikai viena instrukcija un darbojas viens pavediens. Oficiālā atbilde šādos gadījumos ir lietot Jython vai neatkarīgus procesus pavedienu vietā.

Arī jaunākajā Python 3k versijā GIL joprojām ir, bet ar dažiem uzlabojumiem. Ja piever acis uz tehnisko realizāciju, šajā prezentācijā ir pāris interesanti fakti:

  • Šobrīd, “optimizējot” ar vairākiem pavedieniem un paralēlu izpildi, tiek sasniegts negatīvs rezultāts – prezentācijas piemērā uzdevums tiek veikts 1.8 reizes lēnāk.
  • Nākošajās Python versijās vairākpavedienu programmas strādās gandrīz tikpat ātri kā viena pavediena programmas.

Tāpēc, ja vien programmas šaurā vieta nav I/O (bieži ir), tad par vairākiem pavedieniem Python programmās ir jāaizmirst.

One Response to “Python 3.2 un GIL”

  1. I dont see the logic in your argument but I think you’ve painted your strokes

Leave a Reply

You must be logged in to post a comment.