Bonjour !

Je vais commencer par présenter ce que j'aimerais savoir :

J'ai essayer ce bout de script et obtenu ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>>> from multiprocessing import Process
>>> class Foo:
...     def run(self):
...             print(self.stop)
...             self.stop = False
...             print(self.stop)
...     def start(self):
...             self.stop = True
...             p = Process(target = self.run)
...             p.start()
...             p.join()
... 
>>> f = Foo()
>>> f.start()
True     # Le self.stop "parallèle" est à True
False    # Le self.stop "parallèle" est bien passé à False
>>> f.stop
True     # Le self.stop "parallèle" est à False mais celui de ma classe reste à True ...
Ma question étant : Comment je pourrait modifier f.stop (et plus globalement f et tous ses attributs) en utilisant les Process ?


En fait mon problème est dût au thread que j'utilise en ce moment dans mon programme. Il y a beaucoups de threads et, pour une raison qui m'échappe, l'ordonnanceur décide parfois d'accorder 1 ou 2 secondes aux threads en laissant freeze mon programme principal (2 secondes pour faire un "l = []" me parait long ...). J'ai chercher une solution et visiblement le multiprocess serait plus performant. Seulement, ces classes qui tournent en parallèle ont besoin de rester actives et surtout de communiquer avec le programme principal (autrement que par un print ...). Et avant d'implémenter le multiprocess, je me suis rendu compte du problème juste au dessus.

Donc si quelqu'un à une idée pour "les threads qui font freeze" je suis preneur, mais j'aimerais quand même comprendre le multiprocess