[Commits] python.it commit r186 - python/contrib/faq/trunk
commit a svn.python.it
commit a svn.python.it
Mer 21 Giu 2006 01:27:01 CEST
Author: eriol
Date: Wed Jun 21 01:26:58 2006
New Revision: 186
Modified:
python/contrib/faq/trunk/library.ht
Log:
Revisionato
Modified: python/contrib/faq/trunk/library.ht
==============================================================================
--- python/contrib/faq/trunk/library.ht (original)
+++ python/contrib/faq/trunk/library.ht Wed Jun 21 01:26:58 2006
@@ -1,8 +1,8 @@
-Title: FAQ librerie ed estensioni Python FAQ
+Title: FAQ librerie ed estensioni Python
Content-type: text/x-rst
====================================
-Python Library and Extension FAQ
+FAQ librerie ed estensioni Python
====================================
:Date: $Date: 2005-12-16 19:21:20 -0700 (Fri, 16 Dec 2005) $
@@ -35,7 +35,7 @@
`the Library Reference <http://www.python.org/doc/lib/>`_
per vedere se vi e' un modulo di libreria standard. (Eventualmente
si possono conoscere i moduli presenti nella libreria standard ed
-saltare questo passo.)
+essere in grado di saltare questo passo.)
Quindi si puo' cercare nel
`Python Package Index <http://cheeseshop.python.org/pypi>`_.
@@ -55,9 +55,9 @@
---------------------------------------------------------------------
Se non si trovano i sorgenti si puo' trattare di un builtin o di un
modulo caricato dinamicamente implementato in C, C++ o in un altro
-linguaggio compilato. Un questo caso potrebbe non essere presente il
-sorgente o essere in qualche directory di sorgenti C (non nel path
-Python).
+linguaggio compilato. In questo caso potrebbe non essere presente il
+sorgente oppure potrebbe esservi qualcosa come mathmodule.c, in
+qualche directory di sorgenti C (non nel path Python).
Vi sono (almeno) tre tipi di moduli in Python:
@@ -69,7 +69,7 @@
print sys.builtin_module_names
-Come si rende un script Python eseguibile su Unix?
+Come si rende uno script Python eseguibile su Unix?
---------------------------------------------------------
Sono necessarie due cose: lo script deve essere eseguibile e la prima
@@ -124,7 +124,7 @@
Il modulo curses supporta le funzioni di base curses ma anche
molte funzioni aggiuntive di ncurses e di SYSV curses come i colori,
il supporto a set di caratteri aggiuntivi e la gestione del mouse
-e dei pads.
+e dei pad.
Questo significa che il modulo non e' compatibile con i sistemi operativi
che abbiamo solo i curses BSD, ma non sembra vi sia alcuni sistema
operativo, attualmente mantenuto, che ricada in questa categoria.
@@ -158,7 +158,7 @@
=================
-Come si effettua un test di un programma Python o di un componente?
+Come si effettua il test di un programma Python o di un componente?
--------------------------------------------------------------------
Python ha due framework di test. Il modulo
@@ -178,8 +178,8 @@
il bell'effetto di rendere il programma piu' veloce
(perche' l'accesso a variabili locali e' piu' veloce rispetto agli
accessi globali).
-Inoltre il programma non deve dipendere sulla variazione di
-variabili globali, che rendono piu' difficile l'esecuzione dei test.
+Inoltre il programma non deve dipendere dalla variazione di
+variabili globali, cio' rende piu' difficile l'esecuzione dei test.
La "logica generale" del programma puo' essere semplicemente ::
@@ -194,7 +194,7 @@
Un insieme di test puo' essere associato a ciascun modulo
che automatizzi la sequenza di test. Sembra un grande lavoro,
-ma in realta' Python e' cosi' spiccio e flessibile
+ma in realta' Python e' cosi' conciso e flessibile
che risulta sorprendentemente semplice.
La codifica risulta anche piu' piacevole e divertente
@@ -209,8 +209,8 @@
self_test()
Programmi che interagiscano con interfacce esterne complesse
-possono essere testati anche queste non sono presenti utilizzando
-delle interfacce "fittizie" implementate in Python.
+possono essere testati anche quando queste non sono presenti
+utilizzando delle interfacce "fittizie" implementate in Python.
Come si genera la documentazione dalle doc strings?
@@ -254,7 +254,7 @@
``termios`` e ``fcntl`` per farlo funzionare
ed e' stato provato solo con Linux, sebbene dovrebbe funzionare
anche su altri Unix.
-Con questa codifica i caratteri vengono letti e scritti uno alla volta.
+Con questo codice i caratteri vengono letti e scritti uno alla volta.
``termios.tcsetattr()`` disabilita l'echo dello standard input e il
canonical mode.
@@ -277,7 +277,7 @@
adatto sulle primitive di basso livello fornite dal modulo
``thread``.
-Aahz ha pubblicato una presentazione su suo
+Aahz ha pubblicato una presentazione tratta dal suo
tutorial sul threading che e' molto utile;
si veda http://starship.python.net/crew/aahz/OSCON2001/.
@@ -306,7 +306,7 @@
Adesso pero' (almeno su molte piattaforme) i thread non vengono
eseguiti in parallelo ma risultano eseguiti in sequenza, uno alla
-volta! La ragione e' che lo schedulatore del sistema operativo
+volta! La ragione e' che lo scheduler del sistema operativo
non attiva un nuovo thread fino a che
il thread precedente non e' bloccato.
@@ -343,7 +343,7 @@
La classe ``Queue`` mantiene una lista di oggetti,
con ``.put(obj)`` per aggiungere un elemento alla coda e con
``.get()`` per restituire un elemento. La classe gestira' tutti
-i meccanismi di locking necessari perche' ciascuna attivita'
+i meccanismi di lock necessari perche' ciascuna attivita'
venga eseguita una sola volta.
Ecco un semplice esempio::
@@ -401,7 +401,7 @@
...
Si veda la documentazione del modulo per maggiori dettagli;
-la classe ``Queue`` fornisce un'interfaccia ricca di funzionalita'
+la classe ``Queue`` fornisce un'interfaccia ricca di funzionalita'.
Quali tipi di variazioni di valori globali sono thread-safe?
@@ -420,7 +420,7 @@
Teoricamente questo significa che un'analisi esatta richiede una
profonda comprensione dell'implementazione del PVM bytecode.
In pratica questo significa che le operazioni su variabili condivise
-di tipi builtin (ints, lists, dicts, ecc.) che "sembrano atomiche"
+di tipi builtin (interi, liste, dizionari, ecc.) che "sembrano atomiche"
lo sono veramente.
Ad esempio tutte le seguenti operazioni sono atomiche
@@ -457,14 +457,14 @@
--------------------------------------------------------
Il lock globale dell'interprete
-(GIL: Global Interpreter Lock) e' spesso visto come un'eredita'
-dello sviluppo di Python su sistemi multiprocessori di fascia alta,
+(GIL: Global Interpreter Lock) e' spesso visto come un ostacolo
+all'utilizzo di Python su sistemi multiprocessori di fascia alta,
poiche' un programma Python multithread effettivamente utilizza
-una CPU per l fatto che (praticamente) tutto il codice Python
-puo' essere eseguito quando solo quando si detiene il GIL.
+una CPU per il fatto che (praticamente) tutto il codice Python
+puo' essere eseguito quando solo quando si detiene il GIL.
Nei lontani giorni della versione 1.5 di Python, Greg Stein implemento'
-un pathc set completo (la patch "free threading" patches) che
+un patch set completo (la patch "free threading") che
rimpiazzava il GIL con un locking piu' fine.
Sfortunatamente, anche su Window (dove il locking e' molto efficente)
questo rendeva il codice Python lento il doppio
@@ -481,18 +481,18 @@
Questo non vuol dire che non si possa fare un buon uso di Python
su sistemi con CPU multiple! Basta essere sufficientemente creativi
-e dividere il lavora tra piu' *processi* piuttosto che tra *thread*.
+e dividere il lavoro tra piu' *processi* piuttosto che tra *thread*.
Un utilizzo attento delle estensioni C puo' essere d'aiuto;
se si utilizza un'estensione C per effettuare un task di lunga durata,
-l'estensione puo' rilasciare il GIL mentre il thread dell'esecuzione
-e nel codice C permettendo ad altri thread di svolgere altri compiti.
+l'estensione puo' rilasciare il GIL mentre il thread in esecuzione
+e' nel codice C permettendo ad altri thread di svolgere altri compiti.
E' stato suggerito che il GIL debba essere un lock dipendente dallo
stato dell'interprete piuttosto che globale; gli interpreti non
sarebbero in grado di condividere oggetti. Sfortunatamente anche
questo e' molto difficile che avvenga. Sarebbe un gran mole di lavoro,
perche' molti oggetti hanno attualmente uno stato globale. Ad esempio
-small integer e short strings sono messi in cache;
+sia interi che stringhe di piccole dimensioni sono messi in cache;
questi oggetti dovrebbero essere inseriti nello stato dell'interprete.
E cosi' via...
@@ -502,7 +502,7 @@
maggiore della loro conversione da stato globale a quello di interprete.
Ed infine, una volta che si hanno piu' interpreti che non condividono
-alcuno stato, qual'e' il vero guadagno rispetto ad eseguire ogni
+alcuno stato, qual e' il vero guadagno rispetto ad eseguire ogni
interprete su un processo differente?
@@ -552,10 +552,8 @@
data fork e resource fork, quest'ultimo contiene informazioni
sul tipo di file, il creatore, ... N.d.T.]*
e le informazioni per il Finder.
-on MacOS 9 it doesn't copy the resource fork and Finder info.
-How do I read (or write) binary data?
Come si leggono (o scrivono) dati binari?
---------------------------------------------
@@ -614,22 +612,24 @@
Questo avviene poiche' il padre si aspetta piu' output dal figlio
di quanto questo ne generi oppure per i dati mantenuti sui buffer di
I/O per l'assenza di operazioni di flush.
-Naturalmente il padre in Python puo'
-effettuare un flush esplicito dei dati prima di leggere ogni input
-ma, se il figlio e' un programma nativo in C, probabilmente andra'
-riscritto poiche' il flush e' generalmente automatico, anche se si tratta
-di un programma interattivo.
+Naturalmente il padre codificato in Python puo'
+effettuare un flush esplicito dei dati inviati al figlio prima di leggere
+ogni input ma, se il figlio e' un programma nativo in C, probabilmente andra'
+riscritto in modo che non faccia un flush esplicito del suo output poiche'
+il flush e' generalmente automatico, anche se si tratta di un programma
+interattivo.
Deve essere notato che un deadlock e' possibile anche utilizzando
``popen3`` per leggere stdout e stderr.
Se uno dei due e' troppo grande per il buffer interno
-(aumentare il buffer size non serve) ed il programma effettua una ``read()``
-prima dall'altro si entra nuovamente in deadlock.
+(aumentare la dimensione del buffer non serve) ed il programma
+effettua prima una ``read()`` dall'altro si entra nuovamente in
+deadlock.
Deve essere notato un bug in popen2: se il programma non richiama
-``wait()`` o ``waitpid()`` i processi figlio terminati non vengono piu'
+``wait()`` o ``waitpid()`` i processi figli terminati non vengono piu'
rimossi ed e' possibile che chiamate alla popen2 falliscano poiche'
-si e' raggiunto il limite sul numero dei processi figlio.
+si e' raggiunto il limite sul numero dei processi figli.
Richiamare ``os.waitpid`` con l'opzione ``os.WNOHANG`` previene il problema;
il punto corretto e' inserire tale chiamata prima di richiamare
``popen2``.
@@ -677,7 +677,7 @@
gli pseudo ttys ("ptys") al posto delle pipe. Oppure si puo' utilizzare
un'interfaccia Python alla libreria "expect" di Don Libes.
Un'estensione Python che si interfaccia ad expect e' "expy" ed e' disponibile
-su http://expectpy.sourceforge.net. Una soluzione completamente Python che
+su http://expectpy.sourceforge.net. Una soluzione completamente in Python che
lavora come expect e' ` pexpect <http://pexpect.sourceforge.net>`_.
@@ -687,7 +687,7 @@
http://pyserial.sourceforge.net
-Per Unix, si veda l'Usenet post di Mitch Chapman:
+Per Unix, si veda il post su Usenet di Mitch Chapman:
http://groups.google.com/groups?selm=34A04430.CF9@ohioee.com
@@ -704,7 +704,7 @@
``f.close()`` marca l'oggetto file Python come chiuso dal punto di vista Python
e fa in modo che venga chiuso lo stream C sottostante.
Questo avviene automaticamente anche nel distruttore di f quando
-f non e' piu' accedibile.
+f non e' piu' accessibile.
Ma stdin, stdout and stderr sono trattati in modo speciale da Python, a causa
dello speciale stato dato loro dal C. Eseguendo
@@ -738,8 +738,8 @@
Un indice dei frameworks disponibili e' mantenuto da Paul Boddie su
http://www.python.org/cgi-bin/moinmoin/WebProgramming .
-Cameron Laird mantiene un insieme di page sulle tecnologie web Python su
-http://phaseit.net/claird/comp.lang.python/web_python.html.
+Cameron Laird mantiene un insieme di pagine sulle tecnologie web Python
+su http://phaseit.net/claird/comp.lang.python/web_python.html.
Il sito `Web Programming topic guide <http://www.python.org/topics/web/>`_
contiene altre utili risorse.
@@ -806,7 +806,7 @@
Come si manda una mail da uno script Python?
------------------------------------------------
-Utilizzando `the standard library module smtplib
+Utilizzando `il modulo di libreria standard smtplib
<http://www.python.org/doc/lib/module-smtplib.html>`_.
Ecco un semplice esempio di invio di mail interattivo. Questo
@@ -832,7 +832,7 @@
Un'alternativa, valida solo su Unix, e' utilizzare il sendmail.
Il programma sendmail risiede su directory diverse a seconda dei sistemi;
a volte e' ``/usr/lib/sendmail``, altre ``/usr/sbin/sendmail``.
-La pagina di manuale del sendmail riporta il path corretto.
+La pagina di manuale di sendmail riporta il path corretto.
Ecco il codice d'esempio::
SENDMAIL = "/usr/sbin/sendmail" # sendmail location
@@ -874,7 +874,7 @@
Database
=====================
-Ci sono pacchetti di interfaccia ai database in Python?
+Ci sono interfacce ai database in Python?
----------------------------------------------------------------
Si.
@@ -898,10 +898,10 @@
Come si implementano oggetti persistenti in Python?
------------------------------------------------------------
-La libreria del modulo `pickle
+Il modulo di libreria `pickle
<http://www.python.org/doc/lib/module-pickle.html>`_ risolve la
cosa in modo molto generale (sebbene non si possano salvare cose come
-file aperti, socket o windows) e la libreria del modulo
+file aperti, socket o windows) e il modulo di libreria
`shelve <http://www.python.org/doc/lib/module-shelve.html>`_
utilizza pickle e
(g)dbm per creare collegamenti persistenti che contengono qualsiasi
@@ -915,7 +915,7 @@
fornisce una modalita' molto veloce di memorizzare i tipi Python
non circolari su file e stringhe e viceversa.
Sebbene marshall non
-sia in grado di fare cose strbilianti, come memorizzare istanze o
+sia in grado di fare cose strabilianti, come memorizzare istanze o
gestire referenze condivise, e' estremamente veloce.
Ad esempio caricare mezzo megabyte di dati richiede meno di un terzo
di un secondo. Spesso questo supera il fare qualcosa di piu' complesso
@@ -925,7 +925,7 @@
Perche' cPickle e' cosi' lento?
--------------------------------
-Il formato di default utilizzato dal modulo pickle e' lento ma che
+Il formato di default utilizzato dal modulo pickle e' lento ma
restituisce un risultato leggibile.
Si puo' cambiare il default, ma non si ha compatibilita'
all'indietro::
@@ -967,7 +967,7 @@
In entrambe i casi si utilizzera' il comando db_load per creare un nuovo
database per la versione piu' recente.
Se si ha la versione 3 del DB Berkeley dovrebbe essere disponibile
-il comando db2_load per creare una database in versione 2.
+il comando db2_load per creare un database in versione 2.
Conviene migrare dalla versione 1 del Berkeley DB perche' il codice
dell'hash contiene bachi noti che possono portare alla perdita
@@ -980,7 +980,7 @@
Come si generano numeri casuali con Python?
---------------------------------------------------
Il modulo standard `random <http://www.python.org/doc/lib/module-random.html>`_
-implementa un generatore di numero casuali. L'utilizzo e' semplice::
+implementa un generatore di numeri casuali. L'utilizzo e' semplice::
import random
random.random()
Maggiori informazioni sulla lista
Commits