Whlie infinito con pyparallel

Arnau Sanchez arnau en ehas.org
Mie Feb 21 00:05:40 CET 2007


> p.setData(2)
> time.sleep(n)
> 
> if p.getInAcknowledge() == 1:
>    print 'A'
> if p.getInPaperOut() == 1:
>    print 'B'
> 
> 

> Pero si ese mismo código lo pongo en un Whlile 1: o en un while que 
> tenga un
> número grande de pasadas deja de andar y se desbarata todo... no da error
> pero no setea nada y te marca como si detectara...

Deberías explicar el problema con algo más de precisión. ¿Cuántas pasadas? ¿5? 
¿1000? ¿Has probado a cambiar el valor del "sleep"? ¿Tienes algún otro puerto 
paralelo donde probar?

Ahí va una versión alternativa del script:

import parallel
import time

p = parallel.Parallel()
while 1:
     for data in range(4):
         p.setData(data)
         time.sleep(1.0)
         ack = p.getInAcknowledge()
         po = p.getInPaperOut()
         print "Data: %d, Ack: %d, PaperOut: %d"%(data, int(ack), int(po))

---

 > if p.getInPaperOut() == 1:

Al menos en el python-parallel de la versión 2.4, las funciones de entrada 
devuelven un booleano (True/False), así que compararlo con 1 no es muy 
aconsejable (de momento, por cuestiones de implementación y de compatibilidad, 
True == 1 es verdadero, pero vete a saber en el futuro). "if p.getInPaperOut():" 
es lo suyo.




Más información sobre la lista de distribución Python-es