Mam funkcję, która używa przetwarzania wieloprocesorowego (w szczególności joblib), aby przyspieszyć powolną procedurę za pomocą wielu rdzeni. Działa świetnie; bez pytań.Czy funkcje mogą być znane, jeśli są już w Pythonie (joblib) w trybie wieloprocesowym?
Mam zestaw testów, który wykorzystuje proces wieloprocesowy (obecnie tylko system wieloprocesorowy.), Ale można go zmienić na joblib), aby uruchomić niezależne funkcje testu każdego modułu. Działa świetnie; bez pytań.
Problem polega na tym, że teraz zintegrowałem funkcję przetwarzania wieloprocesowego z pakietem testów modułu, aby proces puli działał z funkcją wieloprocesową. Chciałbym sprawić, by wewnętrzna funkcja wiedziała, że jest już wielokrotnie przetwarzana i nie rozpędza więcej widelców. Obecnie proces wewnętrzny czasami zawiesza się, ale nawet jeśli nie, oczywiście nie ma korzyści dla wieloprocesowości w ramach już równoległej rutyny.
Potrafię wymyślić kilka sposobów (z plikami blokad, ustawieniem jakiejś zmiennej globalnej itp.), Aby określić stan, w którym się znajdujemy, ale zastanawiam się, czy istnieje jakiś standardowy sposób na ustalenie tego (albo w trybie wieloprocesorowym PY lub w joblib). Jeśli działa tylko w PY3, byłoby dobrze, choć oczywiście rozwiązania, które działają również na poziomie 2.7 lub niższym, byłyby lepsze. Dzięki!
Po miesiącu myśleć o tym, jak tylko będę pisał bounty, zorientowali się odpowiedź: ' multiprocessing.current_process(). daemon'. 50 przedstawicielowi tego, kto chce to napisać. :-) –