Salut !
J'ai récemment développé une application python composée d'un serveur et d'un ou plusieurs clients .
Afin de mieux vous exposer mon problème je vais commencer par vous expliquer le fonctionnement de cette application :
Le serveur s'occupe de créer des instances d'objets donnés, par exemple 10 ballons.
Une fois ces dix ballons créés, il créé un thread pour chaque client qui envoie,dans une boucle sans fin, leur position(la position des ballons) dans le format:
"nom_du_ballon,x,y"
Les clients, eux, s'occupent simplement de la réception et de l'affichage d'images représentant des ballons dans les positions données .
Le problème que je rencontre est lié à la façon dont fonctionnent les thread, la fonction qu'ils effectuent se présente sous cette forme:
#Serveur:
while True:
for ballon in liste_des_ballons:
self.connexion.send("nom_du_ballon,x,y")
#Client:
while True:
for ballon in liste_ballons:
afficher_ballon_en(x,y)
La position des ballons change au moins toutes les secondes .
On comprent donc que le ballon en position liste_des_ballons[-1] subit une période beaucoup plus longue que le ballon[0] entre chaque actualisation de sa position .
Le programme n'affiche donc pas un déplacement en temps réel .
Pour corriger ceci, j'ai pensé à créer un thread pour chaque ballon , pour chaque user .
Mais le nombre de thread augmente rapidement et j'hésite à implanter cette correction ne sachant pas l'effet qu'auront (nombre_de_ballons*nombre_d_users) threads .
Enfin j'ai pensé créer un thread pour chaque ballon avec la fonction suivante:
#Serveur:
while True:
for user in liste_users:
send(nom_de_ce_ballon,x,y)
Mais on retrouve le problème initial , bien qu'il soit moindre .
En espérant que ce problème vous intéressera et que nous seront capables ensembles d'y trouver une solution .