Używam Pythona 2.7, mam jakiś kod, który wygląda tak:wykonywania zadań równolegle pytona
task1()
task2()
task3()
dependent1()
task4()
task5()
task6()
dependent2()
dependent3()
Jedyne zależności tutaj są następujące: dependent1 musi czekać na tasks1-3, dependent2 potrzeb czekać na zadania 4-6, a zależne3 musi czekać na zależności1-2 ... Poniższe byłoby w porządku: uruchomienie wszystkich sześciu zadań najpierw równolegle, następnie pierwszych dwóch zależnych równolegle .. następnie ostateczna zależna
Wolę równoległe wykonywanie jak największej liczby zadań, szukałem niektórych modułów, ale miałem nadzieję uniknąć bibliotek zewnętrznych i nie wiem, w jaki sposób Technika ue-Thread może rozwiązać mój problem (może ktoś może polecić dobry zasób?)
Zalecam używanie metod standardowej * Queue.task_done * i * Queue.join * do synchronizowania wątków. U dołu strony w dokumentach Kolejki znajdziesz przykład oczekiwania na zakończenie innych zadań: http://docs.python.org/library/queue.html#Queue.Queue.join –
Jeśli Twój kod jest bardziej złożony, warto zajrzeć do bibliotek zewnętrznych, ponieważ istnieją już rzeczy, które radzą sobie z równoległymi uruchomieniami zadań, jednocześnie upewniając się, że zależności działają w kolejności. –
Z powodu GIL wątki będą się uruchamiać tylko jeden po drugim w standardowym pythonie. Przyszłe wersje Pypy używające STM mogą jednak to obejść. –