Python på webhotell/VPS/Annet

Jeg har et python-script som kjører en del simuleringer og dette tar litt tid. Jeg vil helst at det skal kjøre konstant rundt en ukes tid, men av forskjellige grunner vil jeg unngå at dette gjøres på min egen maskin. Spørsmålet er da om det er mulig å gjøre dette på en annen, leid server, slik at jeg kan starte simuleringen og la den gå så lenge jeg ønsker uten å bekymre meg. Kan alternativt skrive om koden til PHP eller lignende, og sette det opp som en nettside, men antar at det vil gjøre simuleringen ganske mye tregere?

Har prøvd å google litt, men vet ikke helt hvor jeg skal begynne. Trenger ingen ABC-oppskrift, bare litt info om hva slags teknologi man kan bruke til dette.

På forhånd takk!

Jeg vet ikke helt om jeg forstår spørsmålet, men kan du ikke bare kjøre en helt vanlig cron job / scheduled task til å kjøre denne python-filen eller er det noe jeg ikke får med meg her?

Alle VPS’er kommer normalt kun med valgt operativsystem, og muligheten til å legge inn akkurat hva du ønsker, enten det er Node, PHP, Python, COBOL, Simula, PornMaster 4.0 eller whatever.
De fleste Linux distroer kommer forøvrig med Python ferdig installert som default.

Nå er det kanskje ikke nødvendig å betale leie for en VPS for å kjøre et script i en uke, du kan vel gratis sette opp en instans på Google’s Cloud Platform eller hos Amazon, på for eksempel en EC2 server, og sikkert også hos Heroku og flere andre.

Ok, så jeg kan bare bruke putty eller noe sånt da, og kjøre programmet fra en Linux-terminal? Regner med at dette ikke er mulig på et webhotell.

Vet du hvordan hastigheten vil være sammenlignet med min egen PC? (Helt standard, verdi ca. 5000 og Ubuntu som operativsystem) Når man skal kjøre programmet såpass lenge vil naturligvis hastigheten ha en del å si.

Lokalt? Det er det jeg ønsker å unngå.

Om ikke scriptet ditt trenger mye RAM burde en enkelt VPS til U$5/måned fra DigitalOcean holde lenge. Du kan kjøre ditt script via terminal, akkurat som når du kjører det lokalt, bare husk å bruke “screen” eller tilsvarende slik at scriptet fortsetter å kjøre selvom du avslutter terminal-forbindelsen til serveren.

Evt. en skybasert VPS https://www.proisp.no/virtuell-server/

På en server, feks en konfigurerbar VPS i skyen hvor du betaler for det du trenger løpende istedenfor å binde deg opp til en fastpris, eller som nevnt, Digitalocean.

Støtter barentshavet her, anbefaler på det sterkeste en vps fra Digitalocean. Det er billig og du får gode servere.
Et python-script som du snakker om burde gå fint å kjøre på en sånn vps. Hva slags simulering er det snakk om forresten? Kan være at om det krever mye cpu at du burde ha en litt større vps enn den billigste.

1 Like

Det er en genetisk algoritme som skal kjøres på et ganske stort dataset. Så CPU er nok viktigere enn RAM , ja.

Og for å nevne det igjen, du kan gjøre dette helt gratis på Googles Compute Engine eller fortrinnsvis hos Amazon, hvor du er oppe å går etter et par klikk, og kan kjøre Python scriptet ditt.

AWS har en guide til hvordan man benytter deres tjenester med Python, kanskje ikke så relevant kun for å kjøre et script på et datasett, men det viser litt hvor enkelt er.

2 Likes

Dette tror jeg er blir løsningen jeg går for. Virker veldig enkelt og greit å sette opp, og kan også brukes til hoste nettsidene mine hvis jeg er fornøyd.

Har nå prøvd litt forkjellige varianter av CPU og minne hos Google Compute Engine. Men på et punkt slutter algoritmen å bli raskere. Det eneste som skjer er at maskinen bruker en litt mindre andel av CPUen. Hva er grunnen til dette?

Det er nok vanskelig å svare på, men dersom for eksempel scriptet ditt ikke multithreader, så hjelper det lite å legge til flere prossesortråder, når du kun kan utnytte en tråd allikevel.

På et eller annet tidspunkt kommer du vel til et punkt hvor du ikke får utnyttet mer minne heller, uten å forke flere prosesser å kjøre på flere tråder osv.

Det finnes vel moduler for multithreading → https://docs.python.org/2/library/threading.html

Selv med flere tråder, så benytter Python interleaving, slik at prosessene kjøres i serie, ikke i sann parallellisme, og da kommer det jo an på om du har behov for interpreteren eller bare trenger I/O.

Dersom du trenger interpreteren, og vil kjøre flere prosesser parallelt, så finnes det moduler for multiprocessing → https://docs.python.org/2/library/multiprocessing.html

2 Likes

Her ligger nok problemet. Takk igjen!