Portál AbcLinuxu, 28. října 2025 06:16
Diskuse byla administrátory uzamčena.
Díky.
Takžeparallel --sshlogin node01.lan --trc /tmp/{/.}.wav oggdec {} -o /tmp/{/.}.wav ::: *.oggDodám, že{./}je nahrazeno za název ...
{./} nebo {/.}?
{/.} - díky za upozornění, opravil jsem to v článku.
#!/bin/dash
Pozdrav="() {
echo ahoj;
}"
export Pozdrav
bash -c Pozdrav
Je otázka ale jaký shell použije ten příkaz parallel. (Dá se pak asi z parallel spustit "bash -c Funkce" ale to už začíná být dost přes ruku.
nebo o řádcích vstupu, které se nevejdou ani do sekundární cache procesoru (dnes řádově megabajty).
Právěže není vůbec pravda, že by první program (nl) dokončil svou práci výrazně rychleji než třeba grep tak, aby vůbec mělo cenu uvažovat o tom tu práci rozdělit mezi víc procesů. Fakt si to zkuste.
Ostatně tohoto triku "když už mám data v cache CPU, udělám s nimi co nejvíc výpočtů naráz" se využívá fakt hodně dlouho. Vizte třeba funkci copy_and_csum() v kernelu Linuxu tak 15 let zpátky - bylo daleko rychlejší zkopírovat síťový packet na místo
určení a u toho zároveň počítat/kontrolovat kontrolní součet, než tyto věci dělat odděleně.
-Yenya, http://www.fi.muni.cz/~kas/blog/
cd /var/tmp wget http://ftp.linux.cz/pub/FILES.byname # textovy soubor cca 1.1 GB for i in `seq 1 20` ; do time sh -c 'grep -n jezek FILES.byname >/dev/null'; done for i in `seq 1 20` ; do time sh -c 'nl FILES.byname | grep jezek >/dev/null'; doneU mě první varianta běží cca 1.9 s reálného času (okolo 1.1 user, 0.8 system), druhá varianta 6.6 s reálného času (7.0 user, 1.5 system). Beru vždy nejrychlejší čas z těch 20 pokusů. Nicméně zdá se, že samotný výpočet nad daty z cache taky není úplně zadarmo - když spustím ten první případ bez -n (bez počítání čísel řádků), tak je to ještě o dalších 0.2 s rychlejší. -Yenya
parallel podporoval paralelní čtení z jednoho souboru - že by každý proces četl od jiného offsetu nějakou danou velikost, ale to by šlo samozřejmě jen tehdy, kdyby se nemusely hlídat konce řádků a práce by se rozdělovala dle fixní velikosti.
parallel a volaným programům by se pak chunky předávaly třeba na vstup nebo přes pojmenovanou rouru, atd.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.