Wpis z mikrobloga

konto usunięte via Wykop Mobilny (Android)
  • 0
Napisałem w Pythonie skrypta, który szuka czegoś w plikach gzip. Użyłem mmap aby przyspieszyć dzialanie. Dodatkowo bawię się teraz multiprocessingiem i wyniki są bardzo dobre, w sensie "jest szybko" :) ale chciałbym jeszcze szybciej wyciągać z nich dane. Czy można w jakiś sposób użyć zasobów (cpu, ram) drugiej takiej samej maszyny aby przyspieszyć działanie? Pliki gzip są tylko na jednej maszynie.

Dyski SSD, 1 Gigabit pomiędzy maszynami

#python #programowanie
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@uczciwy_szalbierz: w jakim celu piszesz ten program? Chcesz się pobawić/pouczyć czy szybko przeszukiwać gzipy? Jeżeli to drugie to zobacz, czy ag (The Silver Searcher) z opcją -z ci nie wystarczy. Jeśli chodzi o pythona, to ciężko będzie wymyślić coś co działa. Najprościej byłoby synchronizować pliki pomiędzy maszynami (a więc pliki gzip na wielu maszynach) za pomocą rsync/lsyncd, a następnie rodzielenie pracy pomiędzy pythonami w jakiś prosty sposób np. pierwsza maszyna
  • Odpowiedz
konto usunięte via Wykop Mobilny (Android)
  • 0
@Saly: widzę, że chce odkryć koło na nowo ( ͡° ͜ʖ ͡°)

How is it so fast?

Ag uses Pthreads to take advantage of multiple CPU cores
  • Odpowiedz
@uczciwy_szalbierz: Jezeli masz malo logiki zwiazanej z danymi w tych plikach to jak juz @Saly wspomnial ag, lub minimalnie szybszy rg (ripgrep), ktory tez wspiera gzipy. To powinno byc najszybsze i najprostsze rozwiazanie. Jezeli mozesz trzymac pliki na zrodlowych maszynach to mozesz to mielic na 8 serwerach na raz, co bedzie jeszcze szybsze, a sciagac juz same wyniki - nie dosc, ze nie tracisz czasu na sciaganie danych po
  • Odpowiedz