Contents
Sobre
Programas para criar processos. Muito útil para dividir comandos entre todos os cores do(s) processador(es).
Programas
procmaker
Suponha que você queira converter algumas músicas do formato wav para ogg.
$ ls track01.wav track03.wav track05.wav track07.wav track09.wav track11.wav track02.wav track04.wav track06.wav track08.wav track10.wav
Se você executar oggenc -q 4 *.wav, as músicas serão comprimidas uma a uma, usando apenas um core do seu processador, deixando o(s) outro(s) inativo(s). Para resolver esse problema em, por exemplo, um computador dual-core (2 núcleos), use:
$ ./procmaker 2 "oggenc -q 4" *.wav
Os argumentos são:
Número de processos (usualmente o número total de núcleos (cores) do(s) seu(s) processador(es))
- Programa a ser executado
- Arquivos que o programa aceitará como entrada
Para somente prever o que seria feito, acrescente -n no final:
$ ./procmaker 2 "oggenc -q 4" *.wav -n process 0: oggenc -q 4 track01.wav track02.wav track03.wav track04.wav track05.wav track06.wav process 1: oggenc -q 4 track07.wav track08.wav track09.wav track10.wav track11.wav
Note que serão criadas dois processos por causa do argumento '2', e cada uma delas irá para um núcleo diferente, quase que diminuindo pela metade o tempo total de execução.
Enquanto estiver rodando, a saída do programa será estranha, pois cada núcleo jogará informações na tela de músicas diferentes. Isto é normal e não alterará em nada o resultado final.
procmaker-list
Faz a mesma coisa que procmaker, porém a partir de uma lista de comandos. Exemplo:
$ cat comandos_a_executar program0 arg0 program1 arg0 arg1 program2 arg0 arg1 arg2 program3 $ cat comandos_a_executar | ./procmaker-list 2 -n process 0: program0 arg0 && program2 arg0 arg1 arg2 process 1: program1 arg0 arg1 && program3
A leitura dos comandos é a partir da entrada padrão. Os argumentos são:
Número de processos (usualmente o número total de núcleos (cores) do(s) seu(s) processador(es))
-n (opcional): se incluído, apenas mostra o que seria feito
