Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-02-2011, 12: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, 13: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, 13: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, 14: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, 15: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 18:22.
cdere è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2011, 06: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, 10: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, 22: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, 22: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 21-02-2011, 23: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, 21: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 22-02-2011, 23: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, 00: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, 12: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, 21: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, 13: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, 18: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, 19: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, 20: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 REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Denza Z9S: la berlina elettrica con il r...
Valve abilita i driver e il supporto all...
Terafab, il progetto di Musk finisce in ...
Il meglio di Amazon in 42 articoli: sono...
ECOVACS WINBOT W2 PRO OMNI a 349€: ecco ...
Samsung Gallery Cloud Sync introduce il ...
Dyson V8 Cyclone a 249€: scopa elettrica...
Rifiuti elettronici, l'altra faccia dell...
Meta prepara Luna, i nuovi occhiali smar...
SSD NVMe Gen4 2TB in offerta: Acer Preda...
Perché i backup non bastano pi&ug...
Maserati, si concretizza la pista cinese...
Corea del Sud preoccupata: le cinesi YMT...
Se ne vendono 3000 al mese su Amazon: Sm...
Sedie gaming ergonomiche su Amazon: SONG...
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: 10:53.


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