[Risolto] usare pipeline con python

Se avete dubbi o domande sulla programmazione in generale, fatele qui
Rispondi
turbometalskater
Newbie
Messaggi: 17
Iscritto il: 24 ottobre 2011, 0:14

[Risolto] usare pipeline con python

Messaggio da turbometalskater » 6 settembre 2013, 12:50

ciao a tutti,
sto utilizzando uno script in Python2 per mandare in output del testo su dzen2.

il codice è il seguente:

Codice: Seleziona tutto

import subprocess, shlex, time

if __name__ == "__main__":
    cmd = "dzen2 -u -x 0 -y 800 -l 1"
    proc = subprocess.Popen(shlex.split(cmd), stdin=subprocess.PIPE)
    i = 0
    while 1:
        print i
        proc.stdin.write(str(i) + "\n")
        i += 1
        time.sleep(1)
il problema è che sullo standard output (sulla console dove è stato lanciato lo script) viene stampata i tramite 'print i' ogni secondo e incrementato correttamente, mentre nell'stdin del processo sembra che gli vengano passati solo gli i una volta si e una volta no.

perchè questo comportamento?
Ultima modifica di turbometalskater il 6 settembre 2013, 18:29, modificato 2 volte in totale.

Avatar utente
TheSaint
Robin Hood
Messaggi: 7930
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: usare pipeline con python

Messaggio da TheSaint » 6 settembre 2013, 13:05

prova ad abbassare il time.sleep(1)
Alla pagina non ho trovato controindicazioni. Forse ci sono delle cause interiori.
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

turbometalskater
Newbie
Messaggi: 17
Iscritto il: 24 ottobre 2011, 0:14

Re: usare pipeline con python

Messaggio da turbometalskater » 6 settembre 2013, 17:02

abassando il time.sleep ha lo stesso comportamento e va solamente piu veloce

Avatar utente
TheSaint
Robin Hood
Messaggi: 7930
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: usare pipeline con python

Messaggio da TheSaint » 6 settembre 2013, 18:00

Quindi potrebbe essere che dzen2 non ha aggiornamenti in tempi più brevi.
Se lo facessi in modo manuale, come si comporta?
Non è che dzen2 emette un log da verificare se ci sono altre cause?
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

turbometalskater
Newbie
Messaggi: 17
Iscritto il: 24 ottobre 2011, 0:14

Re: usare pipeline con python

Messaggio da turbometalskater » 6 settembre 2013, 18:27

risolto :E il problema era a destra del pipe, e non a sinistra! :D e io che pensavo che fosse qualcosa di gestione dei file descriptor di python..

non gli piaceva l'opzione -l 1 di dzen2
pensavo fosse coerente come opzione, mi leggerò meglio il README! grazie del aiuto :)

Avatar utente
TheSaint
Robin Hood
Messaggi: 7930
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: [Risolto] usare pipeline con python

Messaggio da TheSaint » 6 settembre 2013, 18:53

Non sapevo che i pipes avessero una orientazione :D, forse il tuo sì :D
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

Rispondi