The playground

More information here

Fyrd

What is Fyrd? et hurtigt eksempel AfhængighedssporingSøgeordsargumenter og profiler Installation dokumentation issues and Contributing hvorfor 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. Lige nu understøtter det drejningsmoment og slurm, med en lokal, multiprocessing baseret, fallback. Fordi det er skrevet på […]

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. Lige nu understøtter det drejningsmoment og slurm, med en lokal, multiprocessing baseret, fallback. Fordi det er skrevet på en modulær måde, kan ethvert batchsystem dog tilføjes. For at anmode om, at dit batchsystem tilføjes, bedes du e-maile eller indsende et problem på github-siden.

den lokale fallback mode er en miniature drejningsmoment/slurm stil job Administrerende klon. Det starter en server på din maskine, og den server vil acceptere og køre job på samme måde som drejningsmoment eller slurm ville. Det tillader afhængighedssporing at fungere, men implementerer ikke partitioner eller tillader visning af andre brugers job. Bemærk, at fyrds lokale tilstand ikke er en fantastisk erstatning for multiprocessing, fordi den bruger en filindgivelsesmodel, der er unødvendig for lokale job, det betyder, at der er en lille (ca.0,5 sekund) overhead for hvert job, der indsendes.

et hurtigt eksempel

sig, at du har noget stykke kode, som du fik fra et sted, lad os kalde detreally_slow_algorithm, og du vil køre det på 200 filer og derefter arbejde på derefter undersøge resultaterne afSTDOUT, men du skal først analysere resultaterne for kun at få de to første kolonner. Sådan gø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)

Afhængighedssporing

Fyrd implementerer et simpelt afhængighedssporingssystem. De fleste batchsystemer tillader afhængighedssporing, men de kræver noget kompleks syntaks og en forudgående viden om job-ID, noget du ikke har, når du bygger en pipeline. Fyrd tillader derfor sporing af afhængigheder ved hjælp af Jobobjekter, såvel som af job-ID ‘ er, det har du tilfældigvis dem:

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

Søgeordsargumenter og profiler

Batch-systemer har mange mulige indsendelsesmuligheder, så disse indstillinger kan fungere ens uanset klyngesyntaks, de implementeres alle som nøgleordsargumenter tilfyrd.job.Job klasse. En komplet liste er tilgængelig i dokumentationen.

fordi der kan være mange mulige argumenter til batchsystemet, og fordi de fleste job bruger de samme få argumenter, har Fyrd også et profilsystem, som gør det muligt at samle almindelige argumenter sammen. Dette system implementerer en DEFAULT profil, som tillader job indsendelse uden argumenter overhovedet:

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

Installation

pip install fyrd

for at få en bestemt version:

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

for at få den nyeste stabile version:

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

for at få den seneste udviklingsversion (stadig temmelig stabil):

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

kommandoenfyrd conf init initialiserer dit miljø interaktivt ved at stille spørgsmål om det lokale klyngesystem.

dokumentation

Fyrd har meget omfattende dokumentation på læse Docs, bør du helt sikkert læse det. Et godt sted at starte er Kom godt i gang dokumentation.

issues and Contributing

Hvis du har problemer med dette program tilføje et problem på issues side

Jeg er altid på udkig efter hjælp teste programmet og gennemføre nye søgeord argumenter. Jeg vil også meget gerne tilføje nye batch system miljøer, men jeg har brug for adgang til disse klynger for at teste de nye søgeord argumenter og gennemføre kø parsing. Hvis du gerne vil hjælpe med det eller give mig adgang til din klynge (kun til udvikling af denne pakke), kan du kontakte mig en

hvorfor navnet?

Jeg gav dette projekt navnet ‘Fyrd’ til ære for min bedstemor, H. P. L., som var en lærd af oldengelsk. Det er det gamle angelsaksiske ord for’ hær’, især en hær af frimænd, og denne kode giver dig en hær af arbejdere på enhver maskine eller klynge, så det syntes passende. Logoet er et angelsaksisk skjold af den art, der bruges af Fyrds, med en grafik af en klynge overlejret på toppen.

projektet blev tidligere kaldt “Python Cluster”, som er mere beskrivende, men ærligt kedeligt. Også omkring et halvt dusin andre projekter har næsten samme navn, så det gav ingen mening at beholde dette navn og sætte projektet på PyPI.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.