Bonjour,
j'aimerais bien pouvoir utiliser la commande "print" dans diff=E9rents
threads, et faire en sorte que le flux soit redirig=E9 s=E9par=E9ment pour
chaque thread.
Malheureusement, j'ignore comment faire et j'ai la forte impression que
ce n'est pas forc=E9ment possible...
Merci d'avance ;-)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Andréï
Bonjour, j'aimerais bien pouvoir utiliser la commande "print" dans différents threads, et faire en sorte que le flux soit redirigé séparément pour chaque thread. Malheureusement, j'ignore comment faire et j'ai la forte impression que ce n'est pas forcément possible... Merci d'avance ;-)
Salut, ne faudrait il pas mieux créer un thread qui affiche les messages avec une queue et que chaque thread qui voudrait afficher un message envoie le message à afficher a ce nouveau thread. A++
Bonjour,
j'aimerais bien pouvoir utiliser la commande "print" dans différents
threads, et faire en sorte que le flux soit redirigé séparément pour
chaque thread.
Malheureusement, j'ignore comment faire et j'ai la forte impression que
ce n'est pas forcément possible...
Merci d'avance ;-)
Salut,
ne faudrait il pas mieux créer un thread qui affiche les messages avec
une queue et que chaque thread qui voudrait afficher un message envoie
le message à afficher a ce nouveau thread.
A++
Bonjour, j'aimerais bien pouvoir utiliser la commande "print" dans différents threads, et faire en sorte que le flux soit redirigé séparément pour chaque thread. Malheureusement, j'ignore comment faire et j'ai la forte impression que ce n'est pas forcément possible... Merci d'avance ;-)
Salut, ne faudrait il pas mieux créer un thread qui affiche les messages avec une queue et que chaque thread qui voudrait afficher un message envoie le message à afficher a ce nouveau thread. A++
Pierre Quentel
Bonjour, j'aimerais bien pouvoir utiliser la commande "print" dans différents threads, et faire en sorte que le flux soit redirigé séparément pour chaque thread. Malheureusement, j'ignore comment faire et j'ai la forte impression que ce n'est pas forcément possible... Merci d'avance ;-)
Mais si, avec Python, tout est possible, tout est réalisable !
J'ai trouvé cette solution dans un post de Hrvoje Niksic sur comp.lang.python. Comme la commande print fait appel à la méthode write() de sys.stdout, il faut dans chaque thread affecter à sys.stdout un objet dépendant du thread, et possédant une méthode write
Ces objets sont stockés dans un dictionnaire dont la clé est le thread courant, récupéré par threading.currentThread(). Quand on appelle la méthode write, on récupère le "bon" objet et on fait ce qu'on a à faire avec les données à imprimer
Un exemple avec une fenêtre Tkinter :
from Tkinter import * import thread import threading import sys import random import time
stdout_objs = {}
class Stdout:
def __init__(self,w): stdout_objs[threading.currentThread()] = w
def show(arg): sys.stdout = Stdout(windows[arg]) for k in range(5): print "print dans le thread %s" %arg time.sleep(random.randint(1,4))
root = Tk() windows = [] for i in range(2): t = Text(root) t.pack() windows.append(t)
for i in range(2): thread.start_new_thread(show,(i,))
root.mainloop()
A+ Pierre
Bonjour,
j'aimerais bien pouvoir utiliser la commande "print" dans différents
threads, et faire en sorte que le flux soit redirigé séparément pour
chaque thread.
Malheureusement, j'ignore comment faire et j'ai la forte impression que
ce n'est pas forcément possible...
Merci d'avance ;-)
Mais si, avec Python, tout est possible, tout est réalisable !
J'ai trouvé cette solution dans un post de Hrvoje Niksic sur
comp.lang.python. Comme la commande print fait appel à la méthode
write() de sys.stdout, il faut dans chaque thread affecter à sys.stdout
un objet dépendant du thread, et possédant une méthode write
Ces objets sont stockés dans un dictionnaire dont la clé est le thread
courant, récupéré par threading.currentThread(). Quand on appelle la
méthode write, on récupère le "bon" objet et on fait ce qu'on a à faire
avec les données à imprimer
Un exemple avec une fenêtre Tkinter :
from Tkinter import *
import thread
import threading
import sys
import random
import time
stdout_objs = {}
class Stdout:
def __init__(self,w):
stdout_objs[threading.currentThread()] = w
Bonjour, j'aimerais bien pouvoir utiliser la commande "print" dans différents threads, et faire en sorte que le flux soit redirigé séparément pour chaque thread. Malheureusement, j'ignore comment faire et j'ai la forte impression que ce n'est pas forcément possible... Merci d'avance ;-)
Mais si, avec Python, tout est possible, tout est réalisable !
J'ai trouvé cette solution dans un post de Hrvoje Niksic sur comp.lang.python. Comme la commande print fait appel à la méthode write() de sys.stdout, il faut dans chaque thread affecter à sys.stdout un objet dépendant du thread, et possédant une méthode write
Ces objets sont stockés dans un dictionnaire dont la clé est le thread courant, récupéré par threading.currentThread(). Quand on appelle la méthode write, on récupère le "bon" objet et on fait ce qu'on a à faire avec les données à imprimer
Un exemple avec une fenêtre Tkinter :
from Tkinter import * import thread import threading import sys import random import time
stdout_objs = {}
class Stdout:
def __init__(self,w): stdout_objs[threading.currentThread()] = w