Bonjour !
Je vais commencer par présenter ce que j'aimerais savoir :
J'ai essayer ce bout de script et obtenu ceci :
Ma question étant : Comment je pourrait modifier f.stop (et plus globalement f et tous ses attributs) en utilisant les Process ?
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 ...
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![]()
Partager