[PIPython] wx vs all the others [WAS: no subject]

Valentino Volonghi aka Dialtone dialtone
Gio 10 Mar 2005 15:48:58 CET


Massimo Cecconi wrote:

> O_o .... ma se un'enciclopedia vivente?? :):)  ....complimenti!!
>
> Senti volevo chiederti due cose:
>
> cosa intendi per pythonica???

Un'API pythonica e` quella che utilizza i coding styles specificati 
nella PEP-8, quindi:

nomi di classi camel case con iniziale maiuscola
nomi di metodi, funzioni e variabili in lowercase con underscore, o in 
camel case con iniziale minuscole
E tante altre varie cose. Wx viola queste regole mettendo i metodi con 
camel case e iniziale maiuscola, rendendo piu` difficile capire quali 
sono classi e quali no.
Inoltre il fatto (anche se questo sta cambiando con wxPython 2.5) di 
dover legare gli eventi con EVT_QUALCOSA nel corpo della classe e` 
abbastanza brutto.
In generale poi tutta la faccenda del wxId etc. etc. Fa un ottimo lavoro 
per rendere l'API piu` pythonica WAX ma non corregge la questione dei 
nomi (mentre corregge tutto il resto), solo che essendo ancora un altro 
layer sopra wx, che e` un layer sopra altri toolkit, otteniamo che la 
libreria comincia a diventare poco responsiva ecc ecc.

> nel finale hai parlato di threads giusto?? bene ecco a me serve 
> proprio cercare di capire come funzionano perchè dalla documentazione 
> ufficiale non sono riuscito ad imparare nulla!!!! poi la reputo scarsa 
> e poco chiara (la doc).....

Funziona quasi esattamente come l'API di java. deriva da 
threading.Thread e implementa il metodo run, quindi istanzia la tua 
classe che deriva  da Thread e chiama il metodo start. A questo punto 
hai un thread che gira per i fatti suoi. Se devi solo chiamare una 
funzione nel thread usa threading.Thread(target=funzione, argomenti) che 
creera` il thread solo per eseguire la tua funzione.

In generale sconsiglio l'uso dei thread, quantomeno in python, e 
avvantaggerei i processi differenti. In python infatti il GIL impedisce 
ai thread di scalare su macchine SMP (a meno che il codice che usa i 
thread e` scritto in C come estensione e utilizza le macro 
BEGIN_ALLOW_THREADS e END_ALLOW_THREADS). Purtroppo i thread sono utili 
per gestire calcoli lunghi e operazioni bloccanti, non per dividere 
l'esecuzione del programma in piu` rami. Infatti rendono l'architettura 
enormemente complessa e necessitano di sforzi fuori dal comune e molta 
attenzione per garantire la stabilita` di un software scritto con il 
loro ausilio. I processi invece sono molto piu` sicuri dei thread e 
possono scalare su multipli processori e addirittura su molteplici computer.

> Tornando a questa discussione io oramai mi sono orientato sulle wx 
> perchè personalmente reputo scomodo il file xml che non riesco a 
> modificare opportunamente a mano qualora ce ne fosse la 
> necessità.......nonstante Glade è sicuramente più completo di wxGlade 
> ad esempio oppure di wxDesigner (che sto provando in questi giorni)  
> naturalmente è assolutamente un parere personale e sindacabile in toto 
> :):):)

Questo sinceramente non e` un problema. Ti consiglio di restare su wx 
perche` ormai ti sei costruito il tuo know-how. Ma si puo` generare il 
codice che costruisce l'interfaccia GTK2 partendo da glade con questo 
piccolo software:

http://primates.ximian.com/~sandino/python-glade/

-- 
Valentino Volonghi aka Dialtone
Now Running MacOSX 10.3.8
Blog: http://vvolonghi.blogspot.com
http://weever.berlios.de



More information about the Python mailing list