Zaczynam szkicować strukturę witryny z serwisami informacyjno-finansowymi w języku Python (mam nadzieję, że 3.x) i doszedłem do wniosku - popraw mnie, jeśli " m źle - że będę musiał użyć zarówno biblioteki sieci zdarzeń, jak i biblioteki wieloprocesowej.Pytania dotyczące wielowątkowości i wieloprocesowości dla strony ilościowej
Jedną z części systemu jest po prostu praca cron, która działa w tle, bada rynek giełdowy i inne dane finansowe po zamknięciu rynku, wykonuje uczenie maszynowe i obliczenia ilościowe, a następnie umieszcza prognozy w prostej bazie danych lub nawet plik rozdzielany przecinkiem. (Argumenty są przekazywane między sekcjami systemu za pośrednictwem pliku.)
Rozumiem, że można użyć eventletu do niezablokowanych operacji wejścia/wyjścia, tak aby piękna zupa lub scrapy mogły zeskanować informacje z wielu witryn jednocześnie (sort) i biblioteka wieloprocesowa może umożliwić algorytmom uczenia maszynowego/kwantowym wykonywanie obliczeń wszystkich danych o stanie magazynowym równolegle jako oddzielnych procesów.
Aby wyświetlić prognozy, użytkownicy logowali się do drugiej części systemu zbudowanego za pomocą kolby, która miałaby dostęp do bazy danych i wyświetlała podpowiedzi.
Zakładam, że wszystkie te biblioteki i mieszane wątki/procedury wieloprocesowe są ze sobą zgodne? Mam zamiar używać pythonanywhere.com jako hosta i wydaje się, że ma sporo "baterii w zestawie". Oczywiście po zakończeniu testów prawdopodobnie będę musiał zwiększyć liczbę "pracowników", aby zasilić końcową wdrożoną stronę.
Jakieś pułapki w mieszaniu wątków i wieloprocesowości w czymś tak skomplikowanym?
Nie można jednoznacznie odpowiedzieć na pytanie, jak ja nie próbowałem, że dokładnie, ale ogólnie jest w porządku, aby mieć wiele wątków i wiele procesów. – 101
Nie jestem pewien, jak ściśle * gevent * jest związany z * zdarzeniem *, ale aby wesprzeć proces wieloprocesowy z * gevent *, gdy wątki są małpowane, musiałem użyć modułu * podprocesu * do komunikacji i * pikla * dla serializacja, ponieważ proces wieloprocesowy nie jest obsługiwany przez * gevent *. – cpburnz
Deweloper PythonAnywhere tutaj. Jedną z rzeczy, o których musisz wiedzieć, że robisz to w PythonAnywhere, jest to, że ograniczamy wątki i procesy, które użytkownicy mogą uruchamiać, więc prawdopodobnie będziesz potrzebować puli wątków/procesów. Sądzę, że procesor wieloprocesorowy wbudował się. – Glenn