[Butia-devel-list] El futuro de PyBot, Python 3

Alan Jhonn Aguiar Schwyn alanjas en hotmail.com
Jue Mayo 14 11:37:41 -03 2020


Buenas,

PyBot usa PyUSB que a bajo nivel usa libusb que es C y por eso es tan eficiente. Es solo un "pasamanos", no hay código extra que genere delays en la comunicación.

Con el tema de Python 3:
No sé actualmente como vienen las nuevas Positivo de Ceibal, que versión de Ubuntu traen. Acaba de salir el 20.04 pero ellos tenían la 16 algo.
TurtleBlocks ya está portado a Python 3 y además a usar la interfaz de GTK 3 (por ahora seguimos usando la 2). Mi idea era que cuando Ceibal empieze a usar Ubuntu 18.04 (creo que es la que empieza a traer gtk3 instalado), empezar a usar la otra rama de del repositorio de TurtleBlocks y migrar nuestro código.

Por mientras, puedo hacer un branch en el repositorio de sourceforge "python3" y ahí cambiar el código actual a Python 3.

Lo bueno de la re escritura es que en general el código se vuelve mejor, pero lleva su tiempo. Quizás haya que meterle más tiempo al diseño. La imagen que adjunté hace un tiempo de como era la comunicación creo que sirve de idea. Si tuviera que reescribir el código sacaría algunas conversiones innecesarias que fueron hechas para mejorar la robustez en el caso de uso con cliente-servidor.

Saludos

Alan

________________________________
De: butia-devel-l-bounces en fing.edu.uy <butia-devel-l-bounces en fing.edu.uy> en nombre de Guillermo Rodriguez <guillermor en fing.edu.uy>
Enviado: jueves, 14 de mayo de 2020 10:57
Para: butia-devel-l en fing.edu.uy <butia-devel-l en fing.edu.uy>
Asunto: Re: [Butia-devel-list] El futuro de PyBot, Python 3

Buenas!

Sí me sorprendió lo mínima que fue jeje, igual por curiosidad voy a probar en una XO.

Siguiendo con la discusión sobre el futuro de pybot, mi idea de hacer bindings viene de que butiac en el backend es muy similar a pybot, por tanto en vez de reescribir todo el backend de pybot a Python 3 podemos usar herramientas como SWIG para auto-generar la mayoría del código y luego retoques y extensiones nuevas de la API a mano.

La otra opción es escribir todo de 0 en Python 3, que sí hay que hacerlo se hace pero estaría bueno llegar a una definitiva para ponerme manos a la obra.

Salud.

> On 14 May 2020, at 10:27, Alan Jhonn Aguiar Schwyn <alanjas en hotmail.com> wrote:
>
> Buenas,
>
> La diferencia es 1x10^-4 segundos, incluso menor en algunos casos.
> Estamos hablando de menos de 1 milésima de segundo. Para mi no es una diferencia significativa.
>
> Saludos
>
> Alan
>
> De: butia-devel-l-bounces en fing.edu.uy <butia-devel-l-bounces en fing.edu.uy> en nombre de Guillermo Rodriguez <guillermor en fing.edu.uy>
> Enviado: miércoles, 13 de mayo de 2020 13:08
> Para: butia-devel-l en fing.edu.uy <butia-devel-l en fing.edu.uy>
> Asunto: Re: [Butia-devel-list] El futuro de PyBot, Python 3
>
> Buenas de vuelta!
>
> Me demore un poco jeje pero tengo los resultados.
>
> El benchmark es el siguiente: obtener x lecturas del sensor de distancia conectado en el puerto 1.
>
> Link a fuentes usadas:
> https://gist.github.com/guilledk/82f652a3990da96ba0aa34c298520ae3
>
> Maquina:
> OS X
> 3,1 GHz Dual-Core Intel Core i5
> 8 GB 2133 MHz LPDDR3
> Thunderbolt 3
>
> PyBot Runtime:
> Python 2.7.16 - GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.46.4)
>
> ButiaC Compiler:
> Apple clang version 11.0.0 (clang-1100.0.33.8)
>
> Compile command: “clang -g -Os $(pkg-config --libs --cflags libusb-1.0) -Isrc/include src/*.c test.c "
>
> 1000 lecturas:
>
> butiac: 0.000334 seg
> pybot:  0.000425 seg
>
> 10000 lecturas:
>
> butiac: 0.000234 seg
> pybot:  0.000365 seg
>
> 20000 lecturas:
>
> butiac: 0.000324 seg
> pybot: 0.000362 seg
>
> 50000 lecturas:
>
> butiac: 0.000238 seg
> pybot:  0.000278 seg
>
> Se nota una diferencia de rendimiento mínima, pero existe. Antes de terminar con estas pruebas voy a repetirlas pero en una maquinas ceibal (XO, Magallanes, positivo), ya que sospecho que ahí se va a notar más la diferencia.
>
>
> > On 2 May 2020, at 19:35, Guillermo Rodriguez <guillermor en fing.edu.uy> wrote:
> >
> > Pruebo en estos días y paso los resultados, pero viendo todos los context switch que hace pybot para llegar desde getDistance hasta el read write de Device.py, los resultados van a ser parecidos, en butia-c hay solo un function call de por medio, la prueba seria casi idéntica.
> >
> > _______________________________________________
> > Butia-devel-l site list
> > Butia-devel-l en fing.edu.uy
> > https://www.fing.edu.uy/mailman/listinfo/butia-devel-l
>
> _______________________________________________
> Butia-devel-l site list
> Butia-devel-l en fing.edu.uy
> https://www.fing.edu.uy/mailman/listinfo/butia-devel-l
> _______________________________________________
> Butia-devel-l site list
> Butia-devel-l en fing.edu.uy
> https://www.fing.edu.uy/mailman/listinfo/butia-devel-l

_______________________________________________
Butia-devel-l site list
Butia-devel-l en fing.edu.uy
https://www.fing.edu.uy/mailman/listinfo/butia-devel-l
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://www.fing.edu.uy/pipermail/butia-devel-l/attachments/20200514/93048ebe/attachment.html>


Más información sobre la lista de distribución Butia-devel-l