> > Il problema principale e' che Python manca di una buona primitiva di > concorrenza "universale". I Thread funzionano male in modo specifico in > Python, e in generale sono una primitiva molto old-school. Tanto che per > dire in Java hanno costruito tutto un mondo per cui i thread si riescono a > vedere poco. I processi funzionano meglio sotto molti punti di vista, ma > anche li... gevent e' un framework che per molti versi ti costringe a fare > quello che fai con i framework. Twisted pure lui e' un framework. > > Quindi... sto scrivendo uno script di utility? Posso usare facilmente > gevent (perche' ho completo controllo dello script: e' un processo unix che > creo io e che fa cose). Ma posso usare anche multiprocessing senza grossi > problemi. Ecco, ora voglio estrarre in una libreria per rendere tutto piu' > generale. Bene... che faccio? Dipendo da gevent? E la libreria andra' a > fare a cazzotti con qualcun altro (tipo grequests fa monkey patching > automatico del mondo e tanti saluti). Non posso farlo. Ok, allora uso > multiprocessing. Hei, ma siamo sicuri che voglio che chi chiama le mie > funzioni si trovi sotto il naso un set di workers? Ci ho avuto incubi di > memoria per sta roba. Ma dai, uso i threads... ma sono sicuro di essere I/O > bound e non CPU bound. Si... hei, ma quell'altra libreria che uso usa > multiprocessing, quindi sono a rischio di deadlock se faccio cose anche > banali tipo loggare. > > Ecco... potrei scrivere un adapter che mi permette di fare pluggare il > modello di concorrenza dal chiamante. Non e' *troppo* doloroso. Se avessi > tempo potrei anche farlo una volta per tutte. Poi certo... ci vuole un > qualche tipo di sistema di dependency injection perche' non voglio > assolutamente che due chiamanti facciano cose non compatibili... bene. > > Oppure uso celery. Quindi per la cosa piu' deficiente che devo fare mi > trovo fra le palle un sistema di code, celery, i worker. E poi anche li, > saro' io, ma celery ha un mucchio di problemi per i fatti suoi. > questo della concorrenza universale è un problema però come ha scritto #Enrico Bianchi asyncio è stato introdotto nella libreria standard e alcuni punti che hai elencato vanno a cadere. Certo scrivere codice asincrono porta dietro i suoi problemi.
Io poi non sono un grande esperto di linguaggi di programmazione ma da quel poco che ho visto python no è l'unico ad avere questo problema ... a meno che il linguaggio non sia stato scritto con l'idea della concorrenza.
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python