The playground

More information here

Fyrd

What is Fyrd?Um Exemplo Rápidopalavras-Chave Argumentos e PerfisInstalaçãodocumentaçãoIssues and Contributing por que o nome? What is Fyrd? Fyrd is a library for Python 2.7+/3.3+ that allows easy multiprocessing-style parallelization using a batch system back end. Neste momento ele suporta torque e slurm, com um local, multiprocessamento baseado, fallback. Como é escrito de forma modular, no […]

Fyrd Buildkite build state for version masterFyrd Travis CI tests for the master versionCodacy Project GradeFyrd master ManualPyPI versionimageFyrd Version master Requirements Status

What is Fyrd?

Fyrd is a library for Python 2.7+/3.3+ that allows easy multiprocessing-style parallelization using a batch system back end. Neste momento ele suporta torque e slurm, com um local, multiprocessamento baseado, fallback. Como é escrito de forma modular, no entanto, qualquer sistema de lote pode ser adicionado. Para solicitar que o seu sistema de lote seja adicionado, por favor envie um e-mail ou envie um problema na página github.

o modo de contingência local é um trabalho de gerenciamento de clones de torque/slurm miniatura. Ele inicia um servidor em sua máquina e que o servidor vai aceitar e executar trabalhos da mesma forma que torque ou slurm faria. Ele permite rastreamento de dependências para funcionar, mas não implementa partições ou permite a visualização de outros empregos de usuários. Note que o modo local da fyrd não é um substituto fantástico para multiprocessamento, porque usa um modelo de submissão de arquivos que é desnecessário para empregos locais, isso significa que há uma leve (cerca de 0,5 segundos) sobrecarga para cada trabalho que é submetido.

Um Exemplo Rápido

Digamos que você tenha algum pedaço de código que você pegou de algum lugar, vamos chamá-lo de really_slow_algorithm, e você quer executá-lo em até 200 arquivos e, em seguida, trabalhar em seguida, examine os resultados de STDOUT, mas você precisa analisar os resultados, para obter apenas as duas primeiras colunas. Aqui está como você faria isso:

import osimport mathimport fyrdSCRIPT = """really_slow_algorithm {} | awk '{print $1, "\\t", $2}'"""# This is the same as running fyrd.Job(filter_results, (x,), profile='small', time='00:01:00').submit()# It is best used when dependency tracking is not needed and every function submission requires# the same [email protected](profile='small', time='00:01:00')def filter_results(x): """If first column contains 'tomato', return the log of the second column.""" output = for i in x.split('\n'): name, data = i.split('\t') if 'tomato' in name: output.append(math.log10(int(data))) return outputscript_jobs = for i in os.listdir('input_files'): script_jobs.append(fyrd.Job(SCRIPT.format(i), cores=1, mem='10GB', time='48:00:00').submit())# Wait for jobs to completefyrd.wait(script_jobs) func_jobs = for result in script_job: func_jobs.append(filter_results(result.stdout))filtered = fyrd.basic.get(func_jobs)

Fyrd implementa um sistema de acompanhamento de dependências simples. A maioria dos sistemas de lotes permitem rastreamento de dependências, mas eles requerem uma sintaxe um pouco complexa e um conhecimento prévio do ID do trabalho, algo que você não tem quando você está construindo um pipeline. Fyrd, portanto, permite rastreamento de dependências usando objetos de trabalho, bem como por IDs de trabalho, acontece que você tem esses:

job = fyrd.Job('really_slow_algorithm big_file').submit()job.wait()if job.completed: job2 = fyrd.Job(completed_function)elif job.failed: job2 = fyrd.Job(failed_function)job3 = fyrd.Job(wrapup_function, depends=job2)for job in : job.submit()result = job3.get()

palavras-Chave Argumentos e Perfis

Lote sistemas de ter muitas opções de submissão, para permitir que essas opções funcionam da mesma, independentemente do cluster de sintaxe, todos eles são implementados como argumentos de palavra-chave para o fyrd.job.Job classe. Uma lista completa está disponível na documentação.

porque pode haver muitos argumentos possíveis para o sistema de lotes, e porque a maioria dos empregos usam os mesmos poucos argumentos, Fyrd também tem um sistema de perfil, que permite argumentos comuns a ser agrupados. Este sistema implementa uma DEFAULT perfil, que permite o envio de trabalho sem argumentos em tudo:

fyrd.Job(my_function).submit().get()fyrd.Job(long_function, profile='long').submit().get()

Instalação

pip install fyrd

Para obter uma versão específica:

pip install https://github.com/MikeDacre/fyrd/archive/0.6.2b1.tar.gz --userfyrd conf init

Para obter a última versão estável:

pip install https://github.com/MikeDacre/fyrd/tarball/master --userfyrd conf init

Para obter a última versão de desenvolvimento (ainda bastante estável):

pip install https://github.com/MikeDacre/fyrd/tarball/dev --userfyrd conf init

o fyrd conf init o comando inicializa o seu ambiente interactivamente, fazendo perguntas sobre o sistema de clusters local.

documentação

Fyrd tem documentação muito abrangente sobre ler os documentos, você deve definitivamente lê-lo. Um bom lugar para começar é a documentação de começar.

Issues and Contributing

If you have any trouble with this software add an issue on the issues page

I am always looking for help testing the software and implementing new keyword arguments. Eu também gostaria muito de adicionar novos ambientes do sistema batch, mas eu preciso de acesso a esses clusters, a fim de testar os novos argumentos da palavra-chave e implementar o processamento na fila. Se você gostaria de ajudar com isso ou me dar acesso ao seu cluster (apenas para o desenvolvimento deste pacote), por favor me envie um e-mail a

por que o nome?

dei a este projecto o nome ‘Fyrd’ em honra da minha avó, Hélène Sandolphen, que era uma estudiosa do Inglês Antigo. É a velha palavra Anglo-saxónica para “exército”, particularmente um exército de homens livres, e este código dá-vos um exército de trabalhadores em qualquer máquina ou grupo, pelo que pareceu apropriado. O logotipo é um escudo Anglo-saxão do tipo usado pelos Fyrds, com um gráfico de um aglomerado sobreposto no topo.

O projeto costumava ser chamado de “Cluster Python”, que é mais descritivo, mas francamente chato. Além disso, cerca de meia dúzia de outros projetos têm quase o mesmo nome, então não fazia sentido manter esse nome e colocar o projeto em PyPI.

Deixe uma resposta

O seu endereço de email não será publicado.