W przypadku przetwarzania wieloprocesowego do dystrybucji obliczeń wykorzystuje się wiele procesorów. Ponieważ każdy z procesorów działa równolegle, możesz skutecznie wykonywać wiele zadań jednocześnie. Chciałbyś użyć przetwarzania wieloprocesowego do zadań związanych z procesorem . Przykładem może być próba obliczenia sumy wszystkich elementów ogromnej listy. Jeśli twoja maszyna ma 8 rdzeni, możesz "pociąć" listę na 8 mniejszych list i obliczyć sumę każdej z tych list oddzielnie na oddzielnym rdzeniu, a następnie po prostu zsumować te liczby. W ten sposób uzyskasz ~ 8x przyspieszenie.
W wielu) ( gwintnie potrzebujesz wielu procesorów. Wyobraź sobie program, który wysyła do sieci wiele żądań HTTP. Jeśli użyłeś programu jednowątkowego, zatrzymałby on wykonywanie (blok) przy każdym żądaniu, czekał na odpowiedź, a następnie kontynuował po otrzymaniu odpowiedzi. Problem polega na tym, że twój procesor tak naprawdę nie działa, czekając, aż jakiś zewnętrzny serwer wykona zadanie; w międzyczasie mógł wykonać pożyteczną pracę! Rozwiązaniem jest użycie wątków - możesz utworzyć wiele z nich, z których każdy będzie odpowiadał za żądanie treści z sieci. Zaletą wątków jest to, że nawet jeśli działają one na jednym procesorze, procesor od czasu do czasu „zawiesza” wykonanie jednego wątku i przeskakuje do wykonania drugiego (nazywa się to przełączaniem kontekstu i dzieje się to stale niedeterministycznie odstępach czasu). - użyj gwintowania.
asyncio to w zasadzie wątkowanie, w którym to nie procesor, ale ty, jako programista (a właściwie twoja aplikacja), decydujesz, gdzie i kiedy ma nastąpić przełączenie kontekstu . W Pythonie używasz await
słowa kluczowego, aby zawiesić wykonanie twojego programu (zdefiniowanego za pomocą async
słowa kluczowego).