The playground

More information here

Fyrd

What is Fyrd?Et Raskt Eksempel Avhengighetssporing Dokumentasjon Problemer og BidraHvorfor Navnet? 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. Akkurat nå støtter dreiemoment og slurm, med en lokal, multi basert, fallback. Fordi det er skrevet på en modulær måte, kan imidlertid ethvert […]

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. Akkurat nå støtter dreiemoment og slurm, med en lokal, multi basert, fallback. Fordi det er skrevet på en modulær måte, kan imidlertid ethvert batchsystem legges til. For å be om at batchsystemet ditt legges til, vennligst send en e-post eller send inn et problem på github-siden.

den lokale reservemodus er en miniatyr dreiemoment / slurm stil jobb administrerende klone. Det starter en server på maskinen din, og den serveren vil akseptere og kjøre jobber på samme måte som torque eller slurm ville. Det tillater avhengighetssporing å fungere, men implementerer ikke partisjoner eller tillater visning av andre brukers jobber. Merk at fyrds lokale modus ikke er en fantastisk erstatning for multiprosessering, fordi den bruker en fil-innsendingsmodell som er unødvendig for lokale jobber, dette betyr at det er en liten (omtrent 0,5 sekund) overhead for hver jobb som sendes inn.

Et Raskt Eksempel

Si at du har noe stykke kode som du fikk fra et sted, la oss kalle detreally_slow_algorithm, og du vil kjøre den på 200 filer og deretter jobbe med og undersøke resultatene avSTDOUT, men du må analysere resultatene først for å få bare de to første kolonnene. Slik gjør du det:

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)

Avhengighetssporing

Fyrd implementerer et enkelt avhengighetssporingssystem. De fleste batchsystemer tillater avhengighetssporing, men de krever noe komplisert syntaks og forkunnskaper om jobb-ID, noe du ikke har nar du bygger en rorledning. Fyrd tillater derfor sporing av avhengigheter ved Hjelp Av Jobbobjekter, samt av jobb-Ider, det du tilfeldigvis har de:

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

Satsvise Systemer har mange mulige innsendingsalternativer, for å tillate at disse alternativene fungerer på samme uavhengig av klyngesyntaks, er de alle implementert som søkeordargumenter tilfyrd.job.Jobklassen. En komplett liste er tilgjengelig i dokumentasjonen.

Fordi det kan være mange mulige argumenter til batchsystemet, og fordi de fleste jobber bruker de samme få argumentene, Har Fyrd også et profilsystem, som gjør at vanlige argumenter kan buntes sammen. Dette systemet implementerer en DEFAULT profil, som tillater innsending av jobb uten argumenter i det hele tatt:

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

Installasjon

pip install fyrd

for å få en bestemt versjon:

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

for å få den nyeste versjonen av utviklingen (fortsatt ganske stabil):

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

kommandoenfyrd conf initinitialiserer miljøet interaktivt ved å stille spørsmål om det lokale klyngesystemet.

Dokumentasjon

Fyrd har svært omfattende dokumentasjon På Les Docs, du bør definitivt lese den. Et godt sted å starte er å komme i gang dokumentasjon.

Problemer og Bidra

hvis du har noen problemer med denne programvaren legge til et problem på problemer siden

jeg er alltid på utkikk etter hjelp teste programvaren og implementere nye søkeord argumenter. Jeg vil også veldig gjerne legge til nye batchsystemmiljøer, men jeg trenger tilgang til disse klyngene for å teste de nye søkeordargumentene og implementere køparsing. Hvis du vil hjelpe med det eller gi meg tilgang til klyngen din (for utvikling av denne pakken bare), vennligst send meg en

Hvorfor Navnet?

jeg ga dette prosjektet navnet ‘Fyrd’ til ære For min bestemor, [email protected]è Sandolphen, som var en lærd av gammelengelsk. Det er det gamle Angelsaksiske ordet for ‘hær’, spesielt en hær av frimenn, og denne koden gir deg en hær av arbeidere på en hvilken som helst maskin eller klynge, så det virket passende. Logoen er En Angelsaksisk skjold av den typen som Brukes Av Fyrds, med en grafikk av en klynge oppå toppen.

prosjektet pleide å bli kalt «Python Cluster», som er mer beskrivende, men ærlig kjedelig. Også omtrent et halvt dusin andre prosjekter har nesten samme navn, så det var ingen mening å beholde det navnet og sette prosjektet på PyPI.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.