Jestem trochę zdezorientowany, czy wielowątkowość działa w Pythonie, czy nie.
Wiem, że było wiele pytań na ten temat i przeczytałem wiele z nich, ale nadal jestem zdezorientowany. Wiem z własnego doświadczenia i widziałem, jak inni publikują własne odpowiedzi i przykłady tutaj na StackOverflow, że wielowątkowość jest rzeczywiście możliwa w Pythonie. Dlaczego więc wszyscy powtarzają, że Python jest zablokowany przez GIL i tylko jeden wątek może działać na raz? To oczywiście działa. A może jest jakaś różnica, której tu nie dostanę?
Wielu plakatów / respondentów wciąż wspomina, że wątkowanie jest ograniczone, ponieważ nie wykorzystuje wielu rdzeni. Powiedziałbym jednak, że są one nadal przydatne, ponieważ działają jednocześnie, a tym samym szybciej wykonują połączone obciążenie pracą. Mam na myśli, dlaczego w przeciwnym razie miałby istnieć moduł wątku Pythona?
Aktualizacja:
Dzięki za wszystkie dotychczasowe odpowiedzi. Rozumiem, że wielowątkowość będzie działać tylko równolegle dla niektórych zadań we / wy, ale może działać tylko jedno na raz w przypadku zadań wielordzeniowych związanych z procesorem.
Nie jestem do końca pewien, co to oznacza dla mnie w praktyce, więc podam tylko przykład zadania, które chciałbym wykonać wielowątkowo. Na przykład, powiedzmy, że chcę przejrzeć bardzo długą listę ciągów i wykonać kilka podstawowych operacji na każdym elemencie listy. Jeśli podzielę listę, wyślę każdą podlistę do przetworzenia przez mój kod pętli / łańcucha w nowym wątku i odeślę wyniki z powrotem do kolejki, czy te obciążenia będą działać mniej więcej w tym samym czasie? Co najważniejsze, czy to teoretycznie przyspieszy czas potrzebny do uruchomienia skryptu?
Innym przykładem może być to, że mogę wyrenderować i zapisać cztery różne obrazy za pomocą PIL w czterech różnych wątkach i czy będzie to szybsze niż przetwarzanie obrazów jeden po drugim? Wydaje mi się, że naprawdę się zastanawiam nad tym elementem szybkości, a nie nad prawidłową terminologią.
Wiem również o module przetwarzania wieloprocesowego, ale moim głównym zainteresowaniem w tej chwili są małe i średnie obciążenia zadań (10-30 sekund), więc myślę, że wielowątkowość będzie bardziej odpowiednia, ponieważ podprocesy mogą być inicjowane wolno.