Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-02-2011, 13:33   #1
xwang
Senior Member
 
L'Avatar di xwang
 
Iscritto dal: Oct 2003
Messaggi: 2987
[Python] Eseguire una funzione passata come parametro

Ciao a tutti,
vorrei sapere se è possibile eseguire una funzione passata come parametro.
Mi spiego meglio.
Chiamiamo A il "main" e ipotizziamo che tra i parametri da riga di comando ci sia il nome di una funzione da chiamare (ad es B) definita in un altro file.py.
Se il nome della funzione è il primo argomento argv[1], servirebbe qualcosa del tipo
chiama(argv[1])
E' possibile?
Grazie,
Xwang

PS spero che sia chiaro cosa mi servirebbe
__________________
ASUS N752VX Arch AMD64 + KDE
xwang è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 14:14   #2
xwang
Senior Member
 
L'Avatar di xwang
 
Iscritto dal: Oct 2003
Messaggi: 2987
Forse ho risolto usando il modulo runpy.run_module.
Va bene o ci ono alternative migliori?
Grazie,
Xwang
__________________
ASUS N752VX Arch AMD64 + KDE
xwang è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 14:27   #3
cdere
Senior Member
 
L'Avatar di cdere
 
Iscritto dal: Feb 2001
Città: Foggia
Messaggi: 2519
sì, scrivo di getto senza provare però, quindi potrebbe esserci qualche errore ma l'idea è quella.

Codice:
lista_comandi = [e.lstrip('-') for e in sys.argv[1:]]
for comando in lista_comandi:
    eval(comando)()
__________________
mi sembra di essere tornato adolescente ai bei tempi.. che figata essere di nuovo su questo forum
cdere è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 15:51   #4
xwang
Senior Member
 
L'Avatar di xwang
 
Iscritto dal: Oct 2003
Messaggi: 2987
Con runpy funziona, ma non sono riuscito a condividere variabili globali tra le due funzioni (forse perchè ho solo qualche ora di esperienza con python...).
In serata proverò anche con eval, magari semplifica i problemi con le global.
Xwang
__________________
ASUS N752VX Arch AMD64 + KDE
xwang è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 16:22   #5
cdere
Senior Member
 
L'Avatar di cdere
 
Iscritto dal: Feb 2001
Città: Foggia
Messaggi: 2519
anche se non ti ho detto che l'utilizzo di eval è sconsigliato, dà non poche rogne dal punto di vista di manutenibilità del codice e altro.. puoi risolvere così:

Codice:
lista_comandi = [e.lstrip('-') for e in sys.argv[1:]]
for comando in lista_comandi:
    getattr(nomemodulo, comando, altrafunz_se_comando_nonsitrova)()
se invece 'comando' fa parte del modulo corrente o risolvi con sys.modules(__name__) al posto di nomemodulo o con globals().get(comando, altrafunz_se_comando_nonsitrova)
__________________
mi sembra di essere tornato adolescente ai bei tempi.. che figata essere di nuovo su questo forum

Ultima modifica di cdere : 13-02-2011 alle 19:22.
cdere è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2011, 07:32   #6
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Codice:
def g():
  print 'g!'

def f():
  print 'f'!

Dispatcher = {'f' : f, 'g' : g}

MiaFunzione = 'f'

Dispatcher[MiaFunzione]()
Oppure (ma più "oscura"):
Codice:
def g():
  print 'g!'

def f():
  print 'f'!

MiaFunzione = 'f'

globals()[MiaFunzione]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2011, 11:46   #7
xwang
Senior Member
 
L'Avatar di xwang
 
Iscritto dal: Oct 2003
Messaggi: 2987
Ho risolto così:

module=__import__(moduleName)

importando il modulo e poi chiamando le singole funzioni del modulo importato (che saranno sempre le stesse al varaiare dei moduli).
Che ne pensate?
Xwang
__________________
ASUS N752VX Arch AMD64 + KDE
xwang è offline   Rispondi citando il messaggio o parte di esso
Old 21-02-2011, 23:53   #8
xwang
Senior Member
 
L'Avatar di xwang
 
Iscritto dal: Oct 2003
Messaggi: 2987
Un'altra domanda. Meglio pyton 2.6.5 o 3.1.2? Ubuntu me li rende disponibili tutti e due, ma adesso è installata la 2.6.5.
Xwang
__________________
ASUS N752VX Arch AMD64 + KDE
xwang è offline   Rispondi citando il messaggio o parte di esso
Old 21-02-2011, 23:59   #9
cdere
Senior Member
 
L'Avatar di cdere
 
Iscritto dal: Feb 2001
Città: Foggia
Messaggi: 2519
ad oggi, se devi imparare qualcosa e non hai vincoli di sorta (librerie particolari che non vanno ancora con python 3, vedi django o twisted) vai con python 3.
Che poi non capisco come ubuntu sia ferma al 2.6.x visto che l'ultima release stabile di ramo 2.x è la 2.7...
__________________
mi sembra di essere tornato adolescente ai bei tempi.. che figata essere di nuovo su questo forum
cdere è offline   Rispondi citando il messaggio o parte di esso
Old 22-02-2011, 00:04   #10
xwang
Senior Member
 
L'Avatar di xwang
 
Iscritto dal: Oct 2003
Messaggi: 2987
Quote:
Originariamente inviato da cdere Guarda i messaggi
ad oggi, se devi imparare qualcosa e non hai vincoli di sorta (librerie particolari che non vanno ancora con python 3, vedi django o twisted) vai con python 3.
Che poi non capisco come ubuntu sia ferma al 2.6.x visto che l'ultima release stabile di ramo 2.x è la 2.7...
Beh io sto usando la 10.04 che aggiornerò alla prossima LTS che dovrebbe essere la 11.10 (mi sono stufato di aggiornare ogni 6 mesi).
Xwang
__________________
ASUS N752VX Arch AMD64 + KDE
xwang è offline   Rispondi citando il messaggio o parte di esso
Old 22-02-2011, 22:32   #11
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da xwang Guarda i messaggi
Ho risolto così:

module=__import__(moduleName)

importando il modulo e poi chiamando le singole funzioni del modulo importato (che saranno sempre le stesse al varaiare dei moduli).
Che ne pensate?
Xwang
Che è molto pulita come soluzione.

Riguardo alle versioni di Python, concordo con cdere.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 23-02-2011, 00:27   #12
xwang
Senior Member
 
L'Avatar di xwang
 
Iscritto dal: Oct 2003
Messaggi: 2987
Grazie ad entrambi per l'aiuto.
Mi sto appassionando sempre più a python e sto sperimentando un po' anche con shedskin nel caso mi servisse più velocità.
Ovviamente non mancherò di "rompervi" con altre domande :-)
Per la versione rimarrò su questa 2.6.5
Xwang
__________________
ASUS N752VX Arch AMD64 + KDE
xwang è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2011, 01:08   #13
xwang
Senior Member
 
L'Avatar di xwang
 
Iscritto dal: Oct 2003
Messaggi: 2987
Eccomi qui.
Adesso le cose si fanno difficili.
Il programma A chiama all'interno di un ciclo infinito la funzione B.
E questo va bene.
Però avrei bisogno di usare un joystick e di inviare/ricevere pacchetti udp.
Per il joystick serve con pygame un ciclo infinito che rimanga in ascolto di eventi dal joystick e per la ricezione dei pacchetti UDP penso serva la stessa cosa.
Come faccio?
Temo di aver bisogno di usare dei thred specifici per i due listener del joystick e dei pacchetti UDP.
Sbaglio?
Grazie,
Xwang
__________________
ASUS N752VX Arch AMD64 + KDE
xwang è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2011, 13:58   #14
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Penso sia la strada corretta.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2011, 22:37   #15
xwang
Senior Member
 
L'Avatar di xwang
 
Iscritto dal: Oct 2003
Messaggi: 2987
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Penso sia la strada corretta.
Mi puoi consigliare esempi o dove trovare documentazione al riguardo?
Grazie,
Xwang
__________________
ASUS N752VX Arch AMD64 + KDE
xwang è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2011, 14:07   #16
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Per i thread?
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2011, 19:12   #17
xwang
Senior Member
 
L'Avatar di xwang
 
Iscritto dal: Oct 2003
Messaggi: 2987
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Per i thread?
Si.
Anche perchè sinceramente gli esempi che ho visto svolgono tutti dei cicli while infiniti e non capisco come non facciano ad occupare la cpu al 100% senza fare niente.
Inoltre non ho capito come passare dati dal mio programma ai thread e viceversa.
Xwang
__________________
ASUS N752VX Arch AMD64 + KDE
xwang è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2011, 20:02   #18
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Codice:
import Queue, threading, time

class CustomThread(threading.Thread):

  def run(self):

    while True:
      Job = Jobs.get()
      print 'Ho ricevuto il seguente lavoro:', Job
      Results.put(Job)

Jobs = Queue.Queue()
Results = Queue.Queue()

MyThread = CustomThread()
MyThread.start()

Jobs.put('Uno!')
time.sleep(1)
Jobs.put('Due!')
time.sleep(1)
Jobs.put('Tre!')

while len(Results):
  print 'Ho ricevuto:', Results.get()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2011, 21:58   #19
xwang
Senior Member
 
L'Avatar di xwang
 
Iscritto dal: Oct 2003
Messaggi: 2987
Grazie,
adesso ci lavorerò per le comunicazioni udp.
Nel frattempo ho risolto il problema del joystick usando pygame, inizializzando il joystick e con una funzione che ad ogni chiamata processa tutti gli eventi in coda non ancora analizzati.
Fino ad uin rateo di 200 hz non ho problemi quindi posso fare a meno per il joystick (e per ciò che voglio fare) di un thread apposito.
Xwang
__________________
ASUS N752VX Arch AMD64 + KDE
xwang è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Xbox Cloud Gaming arriva su Amazon Fire ...
Un blackout a San Francisco manda in til...
Windows 11 è diventato più...
Apple cambia strategia a causa della cri...
007 First Light: uscita rimandata di due...
Samsung Galaxy A37 e A57: il comparto fo...
DAZN lancia la sua offerta di Natale: My...
Gigabyte fa marcia indietro? Sparito il ...
Alcuni rivenditori giapponesi bloccano l...
Le feste non placano Amazon, anzi: aggio...
Roborock Q10 S5+ a un super prezzo: robo...
Formula sceglie WINDTRE BUSINESS per gar...
EXPO 1.20: AMD migliora il supporto all'...
MacBook Pro con chip M4, 24GB di RAM e 1...
Lefant M330 da 6.000Pa a 139€ o ECOVACS ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:06.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v