Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: 4096bits в Oct 26, 2015, 10:40



Титла: Python GIL
Публикувано от: 4096bits в Oct 26, 2015, 10:40
Одеве попаднах на една статия относно Global Interpreter Lock и малко се притесних
Още ли съществува това животно и как стои въпроса със Multithreads
Доколкото разбрах, това не позволява повече от едно thread да се изпълнява едновременно. Нещо за защита но данните.
Статията беше от 2012та
Ето и линк
http://www.jeffknupp.com/blog/2013/06/30/pythons-hardest-problem-revisited/


Титла: Re: Python GIL
Публикувано от: gat3way в Oct 26, 2015, 17:51
Съществува. Това не означава че  нишките в питон не могат да се изпълняват конкурентно по принцип, проблемът е в memory management-а на питона, който не е thread-safe. Съответно операции, които "зад кулисите" водят до освобождаване на памет имплицитно включват синхронизация, реализирана на по-ниско ниво с мутекси. Това може да е проблем, може и да не е проблем, в повечето случаи не е толкова тежка драма, колкото се изкарва (субективно мнение базирано на моите си частни случаи).


Съвсем друг е въпроса че многонишковото програмиране в python е огромен ташак, примерно няма нормален thread cancelation, няма го удобството да споделяш лесно памет между нишките (с Queue-та е неудобно и бавно) - аз дори лично опрях дотам да го правя с mmap-нати файлове в един момент, синхронизационните му примитиви са кастрирани и малоумни - примерно рекурсивни мутекси в python - хах, като цяло threading-а в питона е лееееко жалка работа особено ако си свикнал с posix threads в C.