Od kompletnie odwrotnej strony do tego podszedłeś i robisz nonsensowne rzeczy.
Pierwszą rzeczą nad jaką powinieneś był się zastanowić to - co w ogóle sprawia że to tak długo trwa, co jest najwolniejszą częścią. Na przykład... komentując linię robiącą push redisowy.
Na moim losowym przykładowym 5GB pliku dostałem:
- sama iteracja po pliku i generowanie klucza: ~5 minut
- odkomentowana linia dbClient.lpush: ~15-20h
Więc program spędza znaczącą większość czasu na gadaniu z redisem.
Czy jit z tym pomoże? Niezbyt - jit odrobinę przyśpieszy Pythona, ale to nie ma znaczenia jak program spędza 99% czasu czekając na redisa.
Czy GPU z tym pomoże? Nie, po pierwsze z tego samego powodu co jit, po drugie... GPU w ogóle do tego nie służy; GPU ma specjalizowane mikro-rdzenie stworzone do obliczeń macierzowych; nie możesz tak po prostu robić na nim operacji na stringach, a co dopiero na plikach czy socketach; ani nie masz tutaj żadnych operacji typowo matematycznych. W dodatku, jak napisał tkz, takie naiwne "wrzucanie Pythona na GPU" to jak lanie super drogiego paliwa dla samochodów F1 do fiata 126p (który nawet na nim nie zapali).
Zamiast tego spójrz na sposoby przyśpieszenia komunikacji z redisem, np batchowanie zapytań przez `dbClient.pipeline()` (poczytaj o nim w dokumentacji); z tym batchowaniem po 1000 operacji, już mi przyśpieszyło z 10x.
Albo wygenerować komendy dla redis-cli i odpalić go osobno:
https://redis.io/topics/mass-insert , ale nie wiem czy to będzie lepsze czy gorsze od batchowania w Pythonie.