The playground

More information here

Fyrd

What is Fyrd?un exemplu rapid urmărirea dependențeiargumente și profiluri de cuvinte cheie instalaredocumentație probleme și contribuția de ce numele? 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. Chiar acum susține cuplul și slurm, cu o alternativă locală, bazată pe multiprocesare. Deoarece este […]

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. Chiar acum susține cuplul și slurm, cu o alternativă locală, bazată pe multiprocesare. Deoarece este scris într-un mod modular, cu toate acestea, orice sistem lot poate fi adăugat. Pentru a solicita adăugarea sistemului batch, vă rugăm să trimiteți un e-mail sau să trimiteți o problemă pe pagina github.

modul de rezervă locală este un cuplu in miniatura / slurm stil de locuri de muncă gestionarea clona. Acesta începe un server de pe mașină și că serverul va accepta și rula locuri de muncă în același mod în care cuplul sau slurm ar. Permite urmărirea dependenței să funcționeze, dar nu implementează partiții sau nu permite vizualizarea lucrărilor altor utilizatori. Rețineți că modul local fyrd nu este un substitut fantastic pentru multiprocesare, deoarece folosește un model de depunere a fișierelor care nu este necesar pentru joburile locale, ceea ce înseamnă că există o ușoară (aproximativ 0,5 secunde) deasupra capului pentru fiecare job trimis.

un exemplu rapid

spuneți că aveți o bucată de cod pe care ați primit-o de undeva, să o numițireally_slow_algorithm și doriți să o rulați pe 200 de fișiere și apoi să lucrați apoi să examinați rezultateleSTDOUT, dar trebuie să analizați mai întâi rezultatele pentru a obține doar primele două coloane. Iată cum ați face acest lucru:

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)

urmărirea dependenței

Fyrd implementează un sistem simplu de urmărire a dependenței. Majoritatea sistemelor batch permit urmărirea dependenței, dar necesită o sintaxă oarecum complexă și o cunoaștere prealabilă a ID-ului jobului, lucru pe care nu îl aveți atunci când construiți o conductă. Prin urmare, Fyrd permite urmărirea dependențelor folosind obiecte de locuri de muncă, precum și de ID-uri de locuri de muncă, se întâmplă să aibă cele:

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()

argumente și profiluri de cuvinte cheie

sistemele Batch au multe opțiuni posibile de depunere, pentru a permite acestor opțiuni să funcționeze la fel, indiferent de sintaxa clusterului, toate sunt implementate ca argumente de cuvinte cheie pentru clasafyrd.job.Job. O listă completă este disponibilă în documentație.

deoarece pot exista mai multe argumente posibile pentru sistemul de lot, și pentru că cele mai multe locuri de muncă folosesc aceleași câteva argumente, Fyrd are, de asemenea, un sistem de profil, care permite argumente comune să fie grupate împreună. Acest sistem implementează un DEFAULT profil, care permite depunerea de locuri de muncă cu nici un argument, la toate:

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

instalare

pip install fyrd

pentru a obține o versiune specifică:

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

pentru a obține cea mai recentă versiune stabilă:

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

pentru a obține cea mai recentă versiune de dezvoltare (încă destul de stabil):

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

comandafyrd conf init inițializează mediul interactiv punând întrebări despre sistemul de cluster local.

documentație

Fyrd are o documentație foarte cuprinzătoare despre citirea documentelor, ar trebui să o citiți cu siguranță. Un loc bun pentru a începe este documentația de început.

probleme și contribuția

dacă aveți probleme cu acest software adăugați o problemă pe pagina Probleme

sunt mereu în căutarea de ajutor testarea software-ului și punerea în aplicare a unor noi argumente de cuvinte cheie. Aș dori, de asemenea, foarte trebuie să adăugați noi medii de sistem lot, dar am nevoie de acces la aceste clustere, în scopul de a testa noile argumente de cuvinte cheie și să pună în aplicare parsarea coadă. Dacă doriți să ajute cu asta sau da-mi acces la cluster-ul (pentru dezvoltarea acestui pachet numai), Vă rugăm să mi e-mail un

de ce numele?

i-am dat acestui proiect Numele ‘Fyrd’ în onoarea bunicii mele, h Inktil Inkten Sandolphen, care era un savant al limbii engleze vechi. Este vechiul cuvânt Anglo-Saxon pentru ‘armată’, în special o armată de oameni liberi, iar acest cod vă oferă o armată de muncitori pe orice mașină sau grup, așa că părea potrivit. Logo-ul este un scut Anglo-Saxon de tipul celor folosite de Fyrds, cu un grafic al unui cluster suprapus pe partea de sus.

proiectul folosit pentru a fi numit „Python Cluster”, care este mai descriptiv, dar sincer plictisitor. De asemenea, aproximativ o jumătate de duzină de alte proiecte au aproape același nume, așa că nu avea sens să păstrăm acest nume și să punem proiectul pe PyPI.

Lasă un răspuns

Adresa ta de email nu va fi publicată.