ich viele Prozesse, jeder Prozess läuft 5 Sekunden später als ein vorhergehender Prozess, nämlich das Zeitintervall zwischen jedem Prozess erstellen möchten beginnt 5 Sekunden ist, so dass: Lauf Verfahren 1 5 Sekunden warten Laufprozess 2 5 Sekunden warten Lauf Prozess 3 5 Sekunden warten .....wie Prozess aus Python Prozesspool holen
wie:
for i in range(10):
p = multiprocessing.Process(target=func)
p.start()
sleep(5)
#after all child process exit
do_something()
aber ich will do_something() aufrufen, nach dem alle Prozess-Exit- ich weiß nicht, wie die Synchronisation hier mit einem Python Pool libary
zu tun, kann ich
pool = multiprocessing.Pool(processes=4)
for i in xrange(500):
pool.apply_async(func, i)
pool.close()
pool.join()
do_something()
aber in diese haben Art und Weise, 4 Prozesse gleichzeitig laufen, ich kann das Zeitintervall zwischen den Prozessen nicht entscheiden, ist es möglich, einen Prozess-Pool zu erstellen und dann jeden Prozess holen, so etwas wie
pool = multiprocessing.Pool(processes=4)
for i in xrange(500):
process = pool.fetch_one()
process(func, i)
time.sleep(5)
pool.close()
pool.join()
do_something()
Gibt es eine solche Bibliothek oder Quellcode-Schnipsel, die meine Bedürfnisse erfüllen? Dank
Vielleicht könnten Sie Ihrem Funkgerät ein Argument hinzufügen, das die Anzahl der Sekunden angibt, die vor der Verarbeitung gewartet werden müssen? Und berechnen Sie diesen Wert als 5 * i? – mdscruggs
Möchten Sie 'func' alle 5 Sekunden 500 mal anrufen? Warum die Verzögerung? Wie lange dauert ein einzelner 'func'-Anruf? Möchten Sie die Anzahl gleichzeitiger (gleichzeitiger) Anrufe begrenzen? Was passiert, wenn Sie nach 'apply_async()' '' time.sleep() 'hinzufügen? Was willst du stattdessen tun? – jfs
ein einzelner 'func' Anruf dauert 25 Sekunden. und ich möchte 'func' alle 5 Sekunden für viele Male nennen, vielleicht 500 vielleicht 1000. – misteryes