1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| import time
import multiprocessing
class SProcess(multiprocessing.Process):
def __init__(self):
multiprocessing.Process.__init__(self)
self._stopper = multiprocessing.Event()
def stopit(self):
self._stopper.set()
def stopped(self):
return self._stopper.is_set()
def run(self):
while True:
if not self.stopped():
time.sleep(1)
else: return
class Updater:
def __init__(self):
print("creation updater")
self.__fluxs = []
def __del__(self):
print("destrution updater")
def dispose(self):
for f in self.__fluxs:
f.stopit()
f.join()
self.__fluxs.clear()
def __iadd__(self, flux):
#flux.notifyFunc = self.changed
self.__fluxs.append(flux)
return self
def startFluxs(self):
for f in self.__fluxs:
f.start()
def changed(self):
pass
class Flux(SProcess):
def __init__(self):
SProcess.__init__(self)
self.notifyFunc = None
print("creation flux")
def __del__(self):
print("destrution flux")
@property
def notifyFunc(self): return self._notifyFunc
@notifyFunc.setter
def notifyFunc(self, value): self._notifyFunc = value
def simmulation():
print("creation")
u = Updater()
f1 = Flux()
f2 = Flux()
u += f1
u += f2
print("start all flux")
u.startFluxs()
print("pause")
time.sleep(10)
print("dispose updater")
u.dispose()
if __name__ == "__main__":
print("-DEBUT---------------------------------------------------")
simmulation()
print("-END-----------------------------------------------------") |
Partager