eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingbash: konkurencyjne przekierowanie jednego pliku do wielu programów
Ilość wypowiedzi w tym wątku: 15

  • 1. Data: 2010-09-18 07:34:39
    Temat: bash: konkurencyjne przekierowanie jednego pliku do wielu programów
    Od: Mariusz Marszałkowski <m...@g...com>

    Hey

    Mamy program pod konsole tekstową i wieloprocesorowy
    komputer. Program pobiera na standardowe wejście
    dwa wiersze z pliku tekstowego, jakiś czas wykonuje
    obliczenia, po czym wypluwa na standardowe wyjście
    jeden wiersz tekstu wynikowego. Wiersze wejściowe,
    a właściwie pary wierszy wejściowych, są w jednym
    pliku tekstowym. I teraz moje pytanie: jak karmić
    danymi z pliku wiele instancji tego samego programu,
    tak aby w pełni wykorzystać wieloprocesorową
    maszynę? Chodzi o to, żeby kolejne dwa wiersze
    wejściowe podawać temu programowi, który
    zakończył obliczenia i wypluł wyjście.

    Z góry dziękuję


  • 2. Data: 2010-09-18 10:00:42
    Temat: Re: bash: konkurencyjne przekierowanie jednego pliku do wielu programów
    Od: Bronek Kozicki <b...@s...net>

    On 18/09/2010 08:34, Mariusz Marszałkowski wrote:
    > pliku tekstowym. I teraz moje pytanie: jak karmić
    > danymi z pliku wiele instancji tego samego programu,
    > tak aby w pełni wykorzystać wieloprocesorową
    > maszynę? Chodzi o to, żeby kolejne dwa wiersze
    > wejściowe podawać temu programowi, który
    > zakończył obliczenia i wypluł wyjście.

    http://en.wikipedia.org/wiki/Producer-consumer_probl
    em

    a jeżeli za trudne, to po prostu rozdziel dane wejściowe na różne pliki


    B.


  • 3. Data: 2010-09-18 16:11:53
    Temat: Re: bash: konkurencyjne przekierowanie jednego pliku do wielu programów
    Od: Mariusz Marszałkowski <m...@g...com>

    On 18 Wrz, 12:00, Bronek Kozicki <b...@s...net> wrote:
    > On 18/09/2010 08:34, Mariusz Marszałkowski wrote:
    >
    > > pliku tekstowym. I teraz moje pytanie: jak karmić
    > > danymi z pliku wiele instancji tego samego programu,
    > > tak aby w pełni wykorzystać wieloprocesorową
    > > maszynę? Chodzi o to, żeby kolejne dwa wiersze
    > > wejściowe podawać temu programowi, który
    > > zakończył obliczenia i wypluł wyjście.
    >
    > http://en.wikipedia.org/wiki/Producer-consumer_probl
    em
    >
    > a jeżeli za trudne, to po prostu rozdziel dane wejściowe na różne pliki
    >

    Chciałem gotowca :)
    Np. jeden wiersz w bashu, albo w cmd pod windows.
    Pozdrawiam





  • 4. Data: 2010-09-18 17:52:35
    Temat: Re: bash: konkurencyjne przekierowanie jednego pliku do wielu programów
    Od: Wojciech Muła <w...@p...null.onet.pl.invalid>

    On Sat, 18 Sep 2010 09:11:53 -0700 (PDT) Mariusz Marszałkowski
    <m...@g...com> wrote:

    > Chciałem gotowca :)
    > Np. jeden wiersz w bashu, albo w cmd pod windows.

    Może xargs z opcją -P.

    w.


  • 5. Data: 2010-09-18 20:13:29
    Temat: Re: bash: konkurencyjne przekierowanie jednego pliku do wielu programów
    Od: Boguś <n...@i...net>

    Dnia 18-09-2010 o 18:11:53 Mariusz Marszałkowski <m...@g...com>
    napisa?(a):

    > On 18 Wrz, 12:00, Bronek Kozicki <b...@s...net> wrote:
    >> On 18/09/2010 08:34, Mariusz Marszałkowski wrote:
    >>
    >> > pliku tekstowym. I teraz moje pytanie: jak karmić
    >> > danymi z pliku wiele instancji tego samego programu,
    >> > tak aby w pełni wykorzystać wieloprocesorową
    >> > maszynę? Chodzi o to, żeby kolejne dwa wiersze
    >> > wejściowe podawać temu programowi, który
    >> > zakończył obliczenia i wypluł wyjście.
    >>
    >> http://en.wikipedia.org/wiki/Producer-consumer_probl
    em
    >>
    >> a jeżeli za trudne, to po prostu rozdziel dane wejściowe na różne pliki
    >>
    >
    > Chciałem gotowca :)
    > Np. jeden wiersz w bashu, albo w cmd pod windows.

    Może coś w ten deseń


    @echo off

    setlocal ENABLEDELAYEDEXPANSION

    :: Twój plik źródłowy
    set input=test.txt

    del plik1.txt 2> nul
    del plik2.txt 2> nul

    set i=0

    for /f "delims=" %%l in (%input%) do (
    set /a r1=!i! %% 4
    if !r1! == 0 ( echo %%l >> plik1.txt )
    if !r1! == 1 ( echo %%l >> plik1.txt )
    if !r1! == 2 ( echo %%l >> plik2.txt )
    if !r1! == 3 ( echo %%l >> plik2.txt )
    set /a i=!i! + 1
    )

    :: start cmd /c twoje_polecenie.exe plik1.txt
    :: start cmd /c twoje_polecenie.exe plik2.txt

    start cmd /c "cat plik1.txt && sleep 3000"
    start cmd /c "cat plik2.txt && sleep 3000"



    --
    Boguś
    http://bogus.ovh.org/


  • 6. Data: 2010-09-19 11:27:42
    Temat: Re: bash: konkurencyjne przekierowanie jednego pliku do wielu programów
    Od: klops <k...@k...pl>

    Chyba najprościej to:
    * w pętli (do końca pliku wejściowego):
    * w pętli (np. 8 dla 8 rdzeni):
    * odczytać parę wierszy
    * uruchomić nowy proces do przetwarzania
    * w pętli (np. 8 dla 8 uruchomionych procesów roboczych)
    * czekać na koniec procesu
    Wada - dla każdej pary wierszy trzeba tworzyć nowy proces.

    Albo na upartego 2 skrypty:
    Skrypt 1: z parametrem ilość procesów roboczych (np. 8). W skrypcie:
    * dzielisz liczbę wierszy do przetworzenia przez liczbę procesów
    * ustalasz zakresy wierszy do przetwożnia dla wszystkich procesów
    * uruchamiasz Skrypt 2 z odpowiednimi parametrami
    Skrypt 2: z parametrem zakres wierszy do przetworzenia. W skrypcie:
    * Odczytujesz zakres wierszy.
    * Pchasz to rurą do programu roboczego.
    Wada: idealistyczne założenie, że wszystkie pary wierszy z pliku
    wejściowego wymagają takiej samej ilości obliczeń.


  • 7. Data: 2010-09-19 19:38:44
    Temat: Re: bash: konkurencyjne przekierowanie jednego pliku do wielu programów
    Od: Mariusz Marszałkowski <m...@g...com>

    On 19 Wrz, 13:27, klops <k...@k...pl> wrote:
    > Albo na upartego 2 skrypty:
    > Skrypt 1: z parametrem ilość procesów roboczych (np. 8). W skrypcie:
    > * dzielisz liczbę wierszy do przetworzenia przez liczbę procesów

    Tak zrobiłem bo nie miałem czasu na zabawę w pisanie skryptów :)
    Problem jest taki że każda para wierszy wymaga bardzo różnego
    czasu obliczeń, od 0.1s do 2minut :)
    Pozdrawiam



  • 8. Data: 2010-09-19 20:01:43
    Temat: Re: bash: konkurencyjne przekierowanie jednego pliku do wielu programów
    Od: Michoo <m...@v...pl>

    W dniu 19.09.2010 21:38, Mariusz Marszałkowski pisze:
    > On 19 Wrz, 13:27, klops<k...@k...pl> wrote:
    >> Albo na upartego 2 skrypty:
    >> Skrypt 1: z parametrem ilość procesów roboczych (np. 8). W skrypcie:
    >> * dzielisz liczbę wierszy do przetworzenia przez liczbę procesów
    >
    > Tak zrobiłem bo nie miałem czasu na zabawę w pisanie skryptów :)
    > Problem jest taki że każda para wierszy wymaga bardzo różnego
    > czasu obliczeń, od 0.1s do 2minut :)

    No to piszesz "w języku, który znasz najlepiej" prosty loader - robi
    rurki, forkuje i odpala procesy a potem robi select na rurkach
    wyjściowych i gdy któryś pisze to wysyła mu kolejną porcję danych. Max
    30 minut roboty.

    --
    Pozdrawiam
    Michoo


  • 9. Data: 2010-09-19 23:47:00
    Temat: Re: bash: konkurencyjne przekierowanie jednego pliku do wielu programów
    Od: Mariusz Marszałkowski <m...@g...com>

    On 19 Wrz, 22:01, Michoo <m...@v...pl> wrote:
    > W dniu 19.09.2010 21:38, Mariusz Marszałkowski pisze:
    >
    > > On 19 Wrz, 13:27, klops<k...@k...pl>  wrote:
    > >> Albo na upartego 2 skrypty:
    > >> Skrypt 1: z parametrem ilość procesów roboczych (np. 8). W skrypcie:
    > >> * dzielisz liczbę wierszy do przetworzenia przez liczbę procesów
    >
    > > Tak zrobiłem bo nie miałem czasu na zabawę w pisanie skryptów :)
    > > Problem jest taki że każda para wierszy wymaga bardzo różnego
    > > czasu obliczeń, od 0.1s do 2minut :)
    >
    > No to piszesz "w języku, który znasz najlepiej" prosty loader - robi
    > rurki, forkuje i odpala procesy a potem robi select na rurkach
    > wyjściowych i gdy któryś pisze to wysyła mu kolejną porcję danych. Max
    > 30 minut roboty.

    Było banalne rozwiązanie :)
    Nie wiem czemu od razu o tym nie pomyślałem.
    Wystarczyło przetasować kolejność danych i szansa że jeden
    proces dostanie dużo więcej czasochłonnych niż reszta spada
    do zera :)
    Pozdrawiam


  • 10. Data: 2010-09-20 06:43:24
    Temat: Re: bash: konkurencyjne przekierowanie jednego pliku do wielu programów
    Od: Maciej Pilichowski <P...@g...com>

    On Sat, 18 Sep 2010 00:34:39 -0700 (PDT), Mariusz Marszałkowski
    <m...@g...com> wrote:

    Przepraszam, czy Tobie chodzilo o rownolegle? Litosci...

    --
    Moja wyprzedaz wszystkiego: ksiazki, plyty, filmy.
    http://www.garaz.pol.pl/

strony : [ 1 ] . 2


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: