Topic: dubbi sul uso del modulo threading  (Letto 784 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline supremo

  • python unicellularis
  • *
  • Post: 29
  • Punti reputazione: 0
    • Mostra profilo
dubbi sul uso del modulo threading
« il: Aprile 18, 2017, 03:42 »
ciao a tutti, mi sapreste togliere un dubbio al riguardo del modulo threading,  ho cercato dappertutto e non ho trovato le risposte, comqune quello che non capisco e perche devo passare gli argomenti target e args alla istanza del oggetto thred, non ho capito che senso ha passare un argomento che non esiste, e poi non ho capito perche dicono che args e opzionale e altri dicono il contrario
quello che sono a capire e che prima di tutto bisogna istanziare l'oggetto nel sguente modo
import threading
istanza = threading.thread(target = ?, args = ?)

dopodiche non ho capito che cosa segue, ringrazio per la lettura

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.642
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re:dubbi sul uso del modulo threading
« Risposta #1 il: Aprile 18, 2017, 18:12 »
1) sezione sbagliata
2) https://docs.python.org/3/library/threading.html, che dice:
class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
target is the callable object to be invoked by the run() method. Defaults to None, meaning nothing is called.
args is the argument tuple for the target invocation. Defaults to ().

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re:dubbi sul uso del modulo threading
« Risposta #2 il: Aprile 18, 2017, 20:44 »
Dopo di che, come dire... la gente esperta cerca di evitare i thread perche' e' estremamente difficile (a meno di non ricondursi in determinati pattern molto limitati) scrivere codice corretto (e' molto facile scrivere codice che sembra corretto ma che poi si rompe in maniere sorprendenti e molto difficili da ricondurre al problema reale). Di conseguenza, si scelgono altre strategie.

Ci sarebbe da fare una lunga discussione ben piu' complessa di "come invoco il thread" prima di pensare di usare i thread.

Offline supremo

  • python unicellularis
  • *
  • Post: 29
  • Punti reputazione: 0
    • Mostra profilo
Re:dubbi sul uso del modulo threading
« Risposta #3 il: Aprile 18, 2017, 20:58 »
Dopo di che, come dire... la gente esperta cerca di evitare i thread perche' e' estremamente difficile (a meno di non ricondursi in determinati pattern molto limitati) scrivere codice corretto (e' molto facile scrivere codice che sembra corretto ma che poi si rompe in maniere sorprendenti e molto difficili da ricondurre al problema reale). Di conseguenza, si scelgono altre strategie.

Ci sarebbe da fare una lunga discussione ben piu' complessa di "come invoco il thread" prima di pensare di usare i thread.
vabene ho capito non e adatto a un principante comunque quale sarebbe la forma piu semplice di fare una chiamata, grazie

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re:dubbi sul uso del modulo threading
« Risposta #4 il: Aprile 18, 2017, 21:06 »
Dopo di che, come dire... la gente esperta cerca di evitare i thread perche' e' estremamente difficile (a meno di non ricondursi in determinati pattern molto limitati) scrivere codice corretto (e' molto facile scrivere codice che sembra corretto ma che poi si rompe in maniere sorprendenti e molto difficili da ricondurre al problema reale). Di conseguenza, si scelgono altre strategie.

Ci sarebbe da fare una lunga discussione ben piu' complessa di "come invoco il thread" prima di pensare di usare i thread.
vabene ho capito non e adatto a un principante comunque quale sarebbe la forma piu semplice di fare una chiamata, grazie

Te lo ha scritto in dettaglio Glenn. In realta' ti ha riportato la documentazione. Ma e' davvero arduo capire cosa non ti e' chiaro: provo a scrivertelo in altro modo: target e' la funzione che vuoi sia eseguita, args e kwargs gli argomenti (se necessari) che gli verranno passati. Se la tua funzione non ha parametri, ometti entrambi.

Sei familiare con questo? Se no, studialo e ti aiutera' a capire.

Prima risposta di questo: http://stackoverflow.com/questions/817087/call-a-function-with-argument-list-in-python
Poi http://stackoverflow.com/questions/287085/what-do-args-and-kwargs-mean
E infine https://docs.python.org/dev/tutorial/controlflow.html#more-on-defining-functions

Offline supremo

  • python unicellularis
  • *
  • Post: 29
  • Punti reputazione: 0
    • Mostra profilo
Re:dubbi sul uso del modulo threading
« Risposta #5 il: Aprile 18, 2017, 22:12 »
ok quindi il parametro target e args sono funzioni, all'inizio pensavo che fossero variabili, comunque che valori devono avere, nella documentazione e difficile capire

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.642
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re:dubbi sul uso del modulo threading
« Risposta #6 il: Aprile 19, 2017, 14:48 »
ok quindi il parametro target e args sono funzioni, all'inizio pensavo che fossero variabili, comunque che valori devono avere, nella documentazione e difficile capire

"target is the callable object
args is the argument tuple"

Dove è scritto che sono funzioni?

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re:dubbi sul uso del modulo threading
« Risposta #7 il: Aprile 19, 2017, 17:22 »
ok quindi il parametro target e args sono funzioni, all'inizio pensavo che fossero variabili, comunque che valori devono avere, nella documentazione e difficile capire

Penso che il problema non sia come e' scritta la documentazione.

La mia frase "target e' la funzione che vuoi sia eseguita, args e kwargs gli argomenti (se necessari) che gli verranno passati." e' diventata "quindi il parametro target e args sono funzioni".

Il problema e' comprendere un periodo composto di due frasi coordinate (e sapere cosa sia un argomento).

Offline supremo

  • python unicellularis
  • *
  • Post: 29
  • Punti reputazione: 0
    • Mostra profilo
Re:dubbi sul uso del modulo threading
« Risposta #8 il: Aprile 20, 2017, 00:10 »
ok quindi il parametro target e args sono funzioni, all'inizio pensavo che fossero variabili, comunque che valori devono avere, nella documentazione e difficile capire

"target is the callable object
args is the argument tuple"

Dove è scritto che sono funzioni?
gleen nella documentazione ufficiale di python non avevo letto quella parte che riporti nella frase inglese, forse perche era scritto molto piccolo, comunque ho detto che sono funzioni perche riko nel suo commento afferma che target e una funzione e args una tupla, almeno e quello che ho capito, se c'e stato un malinteso, spiegatevi meglio
a proposito non sapevo che un ogetto potesse essere richiamato, pensavo che questo fosse riservato solo alle funzioni e alle variabili, se non e cosi finora credevo che gli ogetti potessero essere solo istanziati, se mi sbaglio chiedo di corregermi

a riko devo dire che non ho capito che cosa c'entra quella frase alla fine del suo commento, che cosa vorresti dire spiegati un po meglio, inoltre che cosa fa kwargs, se devo usare anche quella funzione potresti spiegarmi un po di che cosa si tratta
vi ringrazio per la vostra partecipazione e per il interesse, per uno che conosce python da poco e di grande sostegno
Per caso sapereste consigliarmi qualche libro ricco di esempi pratici
« Ultima modifica: Aprile 20, 2017, 00:24 da supremo »

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.642
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re:dubbi sul uso del modulo threading
« Risposta #9 il: Aprile 20, 2017, 15:43 »
"Callable object" è più generale di "funzione", per ora prendi per buono che è una funzione.

args è una tupla.