Fri, 19 Jun 2009
Python multiprocessing, threads go home
Recordo que una de les coses que va impactar-me més del disseny intern de Python era l'ús de GIL - Global Inter Lock - i els grans problemes que implicava en aplicacions multi thread on es feia ús intensiu de la CPU. Vaig pensar ingènuament que aquest handicap seria resolt per la comunitat tal com es faria més endavant en altres versions del llenguatge Python com ara la versió stackless. Però estava molt equivocat. A la versió 2.6 de Python - CPython - un nou modul anomenat multiprocessing ha agafat el protagonisme del paradigma de la multi concurrència. Multiprocessing proposa l'ús de processos com a entitats de processament en comptes d'utilitzar threads per tal de saltar-se - side stepping - la problemàtica de GIL vs. Trheads. He trobat una presentació força interessant feta pel mateix creador del PEP oficial - forma oficial de documentar i visualitzar informació en el projecte Python - que parla sobre el mòdul multiprocessing. Potser trobo a faltar una comparació entre la versió multiprocessing i multithreading de l'algoritme prime crunhing entre la versió de Cpython i stackless.Multiprocessing with python
La API de multiprocessing és quasi mimètica a la antiga - encara utilitzable - API del modul multithreading, per tan no hauria de ser molt problemàtic per a molts de "nosaltres" portar les nostres aplicacions a les noves tendències.
Però és aquesta tendència la solució a les problemàtiques endèmiques de Python en entorns de multi concurrència ? IMHO crec que no. Potser el mòdul de multiprocessing serà útil en una part de les necessitats però evidentment alguns dels problemes inherents de l'ús del procés com entitat principal de processament - temps de creació, compartir de forma explícita, .. - ens impedirà treure el màxim recurs a les noves plataformes hardware que tendeixen a inundar de cores les nostres plaques.
View more Microsoft Word documents from pvergain.
Posted at: 04:36 | category: /python | Comments (1)