Kirjoittaja Aihe: Python3.n ja Bashin naimakauppa!!  (Luettu 2864 kertaa)

ukki

  • Käyttäjä
  • Viestejä: 156
    • Profiili
Python3.n ja Bashin naimakauppa!!
« : 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.

SuperOscar

  • Käyttäjä
  • Viestejä: 3993
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Python3.n ja Bashin naimakauppa!!
« Vastaus #1 : 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.
pöytäkone 1, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; NUC: openSUSE Leap 15.5; RPi 1: FreeBSD 13.2-RELEASE; RPi 2: LibreELEC 11

ukki

  • Käyttäjä
  • Viestejä: 156
    • Profiili
Vs: Python3.n ja Bashin naimakauppa!!
« Vastaus #2 : 04.05.11 - klo:18.16 »
Olet oikeassa, että se oli jo 2.ssa.

Nyt se on puhdistettuna ja suoraviivaisempana!

aurinkolasit

  • Vieras
Vs: Python3.n ja Bashin naimakauppa!!
« Vastaus #3 : 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

ukki

  • Käyttäjä
  • Viestejä: 156
    • Profiili
Vs: Python3.n ja Bashin naimakauppa!!
« Vastaus #4 : 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

Sami Lehtinen

  • Käyttäjä
  • Viestejä: 754
  • Techie
    • Profiili
    • Sami Lehtinen
Vs: Python3.n ja Bashin naimakauppa!!
« Vastaus #5 : 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.
« Viimeksi muokattu: 31.05.11 - klo:02.53 kirjoittanut Sami Lehtinen »

ukki

  • Käyttäjä
  • Viestejä: 156
    • Profiili
Vs: Python3.n ja Bashin naimakauppa!!
« Vastaus #6 : 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.

Sami Lehtinen

  • Käyttäjä
  • Viestejä: 754
  • Techie
    • Profiili
    • Sami Lehtinen
Vs: Python3.n ja Bashin naimakauppa!!
« Vastaus #7 : 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.

« Viimeksi muokattu: 17.09.12 - klo:19.18 kirjoittanut Sami Lehtinen »