Chcę utworzyć wiele procesów, każdy proces trwa 5 sekund później niż w poprzednim procesie, mianowicie przedział czasu pomiędzy każdym procesie rozpoczyna wynosi 5 sekund, tak, że: run proces 1 odczekać 5 sekund proces bieg 2 czekać 5 sekund proces prowadzony 3 czekać 5 sekund .....jak sprowadzić proces z puli procesów pyton
jak:
for i in range(10):
p = multiprocessing.Process(target=func)
p.start()
sleep(5)
#after all child process exit
do_something()
ale chcę zadzwonić do_something() po wyjściu wszystkich procesów nie wiem jak to zrobić synchronizację tutaj
z libary basenie python, mogę mieć
pool = multiprocessing.Pool(processes=4)
for i in xrange(500):
pool.apply_async(func, i)
pool.close()
pool.join()
do_something()
ale w tym sposób, 4 procesy będą działać równocześnie, nie mogę zdecydować odstęp czasu między procesami, możliwe jest stworzenie puli proces, a następnie pobrać każdy proces, coś
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()
Czy istnieje taka biblioteka lub fragmenty kodu źródłowego, które spełniają moje potrzeby? dzięki
Być może możesz dodać argument do swojej funkcji, który jest liczbą sekund oczekiwania przed przetwarzaniem? I obliczyć tę wartość jako 5 * i? – mdscruggs
Czy chcesz wywoływać 'func' co 5 sekund 500 razy? Dlaczego opóźnienie? Jak długo trwa pojedyncza funkcja 'func'? Czy chcesz ograniczyć liczbę równoczesnych połączeń? Co stanie się, jeśli dodasz 'time.sleep()' po 'apply_async()'? Co chcesz zamiast tego zrobić? – jfs
Indywidualne wywołanie 'func' trwa 25 sekund. i chcę nazywać 'func' co 5 sekund wiele razy, może 500 może 1000. – misteryes