[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