Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: ukki - 03.05.11 - klo:22.58

Otsikko: Python3.n ja Bashin naimakauppa!!
Kirjoitti: ukki - 03.05.11 - klo:22.58
Python3n mukana tulee 'subprocess'- moduli,
jolla voi ajaa python ohjelmassa bash- komennon!

Eli bash- komento argumentteineen muutetaan
list- muotoon, mikä korjaa 'tyhjä'- rajoituksen bash-
komennosta (vrt: 'Ubuntu One' <-> 'Ubuntu', 'One' ),
ja python odottaa suorituksen loppuun
ja voi käyttää tuloksen itse!

Kannattaa tutustua! Sen saa Nattyn mukana.
Otsikko: Vs: Python3.n ja Bashin naimakauppa!!
Kirjoitti: SuperOscar - 04.05.11 - klo:12.12
 ???

subprocess-moduuli on kyllä jo Python 2:ssakin, ja bashin tai minkä hyvänsä ulkoisen komentamisen suorittaminen on aina ollut Pythonissa mahdollista. Versiosta 2.6 alkaen os.popen() ja vastaavat funktiot on vain merkitty vanhentuneiksi ja kehotettu korvaamaan ne tuon subprocess-moduulin funktioilla.
Otsikko: Vs: Python3.n ja Bashin naimakauppa!!
Kirjoitti: ukki - 04.05.11 - klo:18.16
Olet oikeassa, että se oli jo 2.ssa.

Nyt se on puhdistettuna ja suoraviivaisempana!
Otsikko: Vs: Python3.n ja Bashin naimakauppa!!
Kirjoitti: aurinkolasit - 21.05.11 - klo:23.00
Kannattaa myös kurkata moduliin 'multiprocessing', jonka avulla näitä prosesseja tai 'aliprosesseja' voi oleellisesti ajaa rinnakkain.

http://docs.python.org/library/multiprocessing.html
Otsikko: Vs: Python3.n ja Bashin naimakauppa!!
Kirjoitti: ukki - 23.05.11 - klo:01.53
Taitavat tarpeeni olla yksinkertaisemman
prosessoinnin alueella.

Innostuin 3.sta, kun sillä voi korvata
koukeroiset 'bash-skriptit' mielestäni
suoraviivaisemmilla 'python-skripteillä',
jossa komentorivin pituisen 'bashin'
voi ajaa subprosesissa, ja jonka
suoritusta python vielä jää odottamaan!

Python3. ssa on totuttelua, mutta
uudistukseen kannattaa paneutua.
Sen ohjeistus löytyy:

http://docs.python.org/py3k/library
Otsikko: Vs: Python3.n ja Bashin naimakauppa!!
Kirjoitti: Sami Lehtinen - 29.05.11 - klo:17.27
Mihin os.system jäi? Kyse on siitä halutaanko suorittaa mm. bash komento tai muu sovellus blokkaavana vai rinnakkaisena. Usein blokkaava suoritus on toivottua. Kun koodin suoritus jatkuu, tiedetään, että tuo rutiini on suoritettu loppuun asti.

Monen yksinkertaisen asian saa sekavaksi ja toimimaan todella epäluotettavasti, lisäämällä sovellukseen huonosti toteutettua multithreadingia. Klassinnen tapa on käynnistää tehtävä yksi ja suorittaa välissä  tehtävä kaksi. Tehtävän kaksi päätyttyä oletetaan, että tehtävä yksi on suoritettu. Tätä tapahtuu valitettavan usein ja seuraukset voivat olla mielenkiintoisia. Ohjelma voi toimia esim. yhden ytimen koneella loistavasti. Kun sitten vaihdetaan tilalle kahden tai useamman ytimen prosessori(t), niin sovellus alkaa kaatuilemaan siellä sun täällä ennakoimattomasti.

Edit: pari pahaa typoa korjattu.
Otsikko: Vs: Python3.n ja Bashin naimakauppa!!
Kirjoitti: ukki - 31.05.11 - klo:00.29
Yritin esittää python3- käyttöä.

os.system kuuluu käsittääkseni
python2xx sarjaan.

python3 subprocess- moduli oikoo
tässä ja tarjoaa:
-- aliprosessin suoraan ilman tuloksen
kontrollointia.
-- aliprosessin tuloksen käyttöön.
-- aliprosessin, josta saadaan exit- kooodi
tarkistukseen,
-- aliprosessin, josta saadaan exit- koodi
ja tulos käyttöön.

Mitä vielä voisi toivoa. Minulla on 4-prosessoria.
Olet oikeassa ajoitusongelmissa, mutta
muutaman subprosessin hallinta ei tuottane
vaikeuksia. Odotus-luupia voi aina
kokeilla.

Monihiuksista prosesseista ei
minulla ole kokemusta.
Otsikko: Vs: Python3.n ja Bashin naimakauppa!!
Kirjoitti: Sami Lehtinen - 17.09.12 - klo:19.16
Tämmöseen törmäsin, voisi sopia tähän hommaan kuin nenä päähän.

http://amoffat.github.com/sh/index.html (sh.py)

Huomenna muuten testailen sitten muutamaa eri tietokantaa tuotanto datasetillä ja katson mikä on niiden
suorituskyky.

Totta kai testissä on myös pakko kokeilla multiprocessing modulia, että saa kyselyt rinnastettua. Muuten "inprocess" kannat kuten sqlite varmasti antavat parempia tuloksia kuin järeämmät.