Você está procurando exatamente o mesmo sistema esta questão recente necessária. A resposta dada (script python-based-based) irá se encaixar perfeitamente às suas necessidades, uma vez adaptada um pouco para o seu caso mais simples.
Estou executando um comando (pngquant para ser preciso: link ) em uma janela de terminal. Notei que, se eu abrir 4 janelas de terminal e executar o comando pngquant em cada uma delas, obtenho um aumento de 4x na velocidade, efetivamente comprimindo 4 vezes mais imagens no mesmo tempo que antes.
Então usei essa abordagem e atribuí a cada processo pngqunat uma parte das imagens que eu quero compactar, criando efetivamente vários processos em vários segmentos
Você pode executar o comando em vários segmentos sem fazer esses truques? Gostaria de dizer apenas "execute a compactação pngquant em todas essas imagens e use todos os threads disponíveis".
Você está procurando exatamente o mesmo sistema esta questão recente necessária. A resposta dada (script python-based-based) irá se encaixar perfeitamente às suas necessidades, uma vez adaptada um pouco para o seu caso mais simples.
Expandindo meu comentário anterior para uma resposta.
O Gnu paralelo é a ferramenta de linha de comando concebida para executar trabalhos simultaneamente, fazendo uso de vários threads, núcleos, CPUs, PCs. xargs agora oferece funcionalidade semelhante com a adição da opção -P
.
Eu fiz um teste para você em um VPS de dois núcleos, usando pngquant
para converter um monte de .png
de arquivos (126 imagens com tamanho médio de 9 MB).
pngquant *.png
demorou 26 minutos.
find . -iname "*.png" | parallel pngquant {}
demorou 14 minutos.
top
mostra a execução paralela de dois comandos pngquant
por vez:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5808 user 20 0 70948 59164 2140 R 100.0 2.9 0:03.49 pngquant
5811 user 20 0 70952 61000 2024 R 99.3 3.0 0:05.67 pngquant
Tags centos multi-threaded