Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5 introduce Dynamic Multi Frame Generation e MFG 6X, permettendo fino a cinque frame generati per ogni frame renderizzato. I test su Cyberpunk 2077 e 007 First Light mostrano forti incrementi di FPS e riduzione della latenza su RTX 5090 Laptop. Migliorano fluidità, stabilità e qualità visiva.
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Xiaomi ha portato Redmi Watch 6 anche sul mercato italiano, puntando su un display AMOLED da 2,07 pollici con picco di luminosità a 2000 nit, frame in alluminio da 9,9mm e un'autonomia dichiarata di 12 giorni. Lo smartwatch gira su HyperOS 3 e integra GPS, Bluetooth 5.4 e oltre 150 sport mode. Il tutto a meno di 100 euro
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


DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta DLSS 4.5: con Dynamic Frame Generation e MFG 6X ...
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
Google aggiorna Chrome: chiusa la quinta...
Il presidente è sicuro: "BYD...
La Commissione europea approva un piano ...
Roborock Qrevo Edge 2 a 699,99€: LDS ret...
Una sviluppatrice ottiene l'esenzione pe...
Oltre 340 testate locali bloccano Intern...
Un round di finanziamento da 1 milione p...
Pan-Good ha creato il motore elettrico a...
Lexar avverte: i prezzi della RAM potreb...
Intel come Apple: copia il mondo degli s...
Wolters Kluwer amplia Arca Evolution con...
Microsoft di nuovo violata: 73 repositor...
Amazon salvata in calcio d'angolo: arriv...
Google NotebookLM si aggiorna con Gemini...
4 portatili tuttofare in offerta su Amaz...
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: 11:33.


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