Re: [Python-es] De paquetes y de huevos

2016-09-30 Por tema Antonio Beamud Montero

El 30/09/16 a las 13:31, Chema Cortes escribió:



Descarté máquinas virtuales y docker en su día, porque tengo mucha
dependencia de la GPU (a través de opencl). En máquinas virtuales
he tenido muchos problemas cuando he probado (todo muy
experimental), y medir los tiempos necesito que todo sea cuando
más cercano al metal mejor... Repecto a docker, lo desestime por
la experiencia con las máquinas virtuales...


Aunque a veces van asociados, docker no es una máquina virtual. La 
confusión viene de que docker corre nativamente en linux (de 64 bits), 
por lo que se necesitan máquinas virtuales en mac y windows. Pero si 
trabajas en linux, no necesitas virtualizar nada, tan sólo lanzar 
docker como servicio (y con rkt ni eso).


Cuando usas virtualenv, juegas con el PATH del entorno para posicionar 
unas versiones de módulos sobre otras; con docker, juegas con el 
sistema de ficheros BTRFS para posicionar unos directorios por encima 
de otros. Si buscas algo más cercano al metal, docker parece mejor 
preparado que virtualenv.




Si, si estuve investigando y leyendo sobre lo de usar lxc, etc.. pero 
estuve leyendo de gente que le había dado problemas, y como venía de 
hacer tantas pruebas infructuosas con las máquinas virtuales, por eso lo 
dejé en vía muerta... puede que tengas razón y tenga que probar más 
sobre docker... pero por ahora me decanto por montar la infraestructura 
con virtualenvs emulando las distros.


P.D: Me apunto lo de conda para usarlo.

Gracias a todos por vuestros aportes.

Un cordial saludo.

___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] De paquetes y de huevos

2016-09-30 Por tema Antonio Beamud Montero

El 30/09/16 a las 11:49, Chema Cortes escribió:
El vie., 30 sept. 2016 a las 10:53, Antonio Beamud Montero 
(<antonio.bea...@gmail.com <mailto:antonio.bea...@gmail.com>>) escribió:




Para eso necesitaría meter las mismas versiones que llevan las
distintas distribuciones, y poder crear un virtualenv ubuntu12.04
(por ejemplo), instalando ahí con pip las mismas versiones que se
instalan via apt-get en ubuntu 12.04...


Si entiendo bien, pretendes mantener versiones distintas según las 
distintas distribuciones de linux. Es completamente una locura. Si ya 
es complicado mantener versiones para distintas plataformas, ampliar 
el espectro a todas las posibles configuraciones es imposible. Por lo 
menos tendrás versiones distintas para python2 y python3, además de 
versiones diferentes de otras librerías principales (gtk2/gtk3, 
qt4/qt5, mysql/mariadb,).


Si, bueno, no para todas las distros de linux, solo 2 o 3, realmente 
poder ir probando posibles migraciones.
Tengo experiencia en la pesadilla que supone mantener para varias 
distros, pero es impepinable por ahora...




Este problema es común a todos los lenguajes de programación y la 
solución es docker. No sé porqué lo has descartado tan pronto. Si no 
te parece liviano coreOS o rancherOS, es que no tenemos el mismo 
concepto de "liviano". Hoy en día, incluso se puede asociar la 
ejecución de un contendor docker con la carga de un módulo python, 
similar a lo que sería la carga de una librería dinámica, pero sin los 
problemas de dependencias con librerías del sistema. Por ahí va el 
futuro de python y de muchos otros lenguajes, aunque no sabría decirte 
si será docker, rkt u otro mejor.


Descarté máquinas virtuales y docker en su día, porque tengo mucha 
dependencia de la GPU (a través de opencl). En máquinas virtuales he 
tenido muchos problemas cuando he probado (todo muy experimental), y 
medir los tiempos necesito que todo sea cuando más cercano al metal 
mejor... Repecto a docker, lo desestime por la experiencia con las 
máquinas virtuales...


La conclusión a la que he llegado, es que lo más sencillo en mi caso 
sería, poder generar un virtualenv, con una plantilla de los paquetes 
que incluye una distribución en concreta, meter mi soft, lanzar los 
tests y ver donde da problemas. Si puedo adaptarlo para que funcione sin 
problemas en varias distros sin necesidades especiales, mejor, e 
intentar generar paquetes para esa distro... El único coñazo es tener 
que instalar la distro (o buscar el listado de paquetes en la web), 
sacar los de python de los que dependo, sus versiones y crear el 
virtualenv con él... Sino darle la oportunidad a docker, para 
distribuirlo...


Un saludo.



--
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales": 
http://blog.ch3m4.org <http://ch3m4.org/blog>



___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/



___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] De paquetes y de huevos

2016-09-30 Por tema Antonio Beamud Montero

El 29/09/16 a las 22:09, Mario Lacunza escribió:
Una pregunta de donde sacas este argumento? ese mas parece el manejo 
de Windows y no de Linux.


¿A que argumento te refieres?


Cuando un paquete A necesita la lib1.2 la instala (si esta disponible 
en el repositorio) Sino la compilas.


Si en el OS está ya instalada la lib1.3 esta sigue funcionando y los 
programas q la necesiten seguiran apuntando a ella y no a lib1.2 
(precisamente el DLL Hell de windows)





AHORA si te refieres a UNICAMENTE a subprogramas de o para python 
entonces usas el virutalenv y listo. Cuál es el drama?

Todo me refiero a librerias y programas de python.
Intento evitar todo eso, mezclar paquetes/librerías instaladas via 
apt-get y las instaladas via pip.
Imagina que la distribución instala via apt-get un paquete paqX, que 
depende de la librería >=lib1.3. Tu ahora instalas tu egg que depende de 
la librería lib2.9 (que hace cambios en el api de la lib), esa 
aplicación paqX te puede empezar a dar problemas, porque resuelve 
dependencias contra la lib2.9 (incluso peores casos donde no se 
especifica en los requerimientos que versión necesita para funcionar).
Esto es precisamente lo que intento evitar, y lo que me gustaría es 
poder simular todas las dependencias que tienen una distribución, y 
poder probar paquetes que no están en la distribución para ver que 
resuelve bien dependencias y no genera conflictos.


No hay ningún drama, la idea final es que intento no mezclar paquetes 
instalados con apt-get y con pip, porque al final, lo que quiero es 
poder crear paquetes para las distribuciones que se instalen via 
apt-get, pero antes quiero probar todo en un entorno ligero via 
virtualenv. (no se si me explico).


Para eso necesitaría meter las mismas versiones que llevan las distintas 
distribuciones, y poder crear un virtualenv ubuntu12.04 (por ejemplo), 
instalando ahí con pip las mismas versiones que se instalan via apt-get 
en ubuntu 12.04...



Saludos / Best regards

Mario Lacunza
Email:: mlacu...@gmail.com <mailto:mlacu...@gmail.com>
Personal Website:: http://www.lacunza.biz/
Hosting:: http://mlv-host.com/
Skype: mlacunzav

Lima - Peru

El 29 de septiembre de 2016, 08:33, Antonio Beamud 
Montero<antonio.bea...@gmail.com <mailto:antonio.bea...@gmail.com>> 
escribió:


Como ya sabéis las distribuciones de linux empaquetan una serie de
librerías y utilidades de python en una versión concreta. Cuando
desarrollas algo sobre python, y necesitas alguna librería que no
está disponible en paquete para tu distribución, normalmente tiras
de huevos (que mal suena eso :D) y lo instalas vía
pip/easy_install... Esto lleva a que si no tienes cuidado, esa
nueva librería que instalas, puede tirar de dependencias y
actualizar alguna de las librerías que ya tenías previamente
instaladas vía sistema de paquetes, pudiendo provocar
mal-funcionamientos en otras aplicaciones como efecto colateral.



___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/



___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


[Python-es] De paquetes y de huevos

2016-09-29 Por tema Antonio Beamud Montero
Como ya sabéis las distribuciones de linux empaquetan una serie de 
librerías y utilidades de python en una versión concreta. Cuando 
desarrollas algo sobre python, y necesitas alguna librería que no está 
disponible en paquete para tu distribución, normalmente tiras de huevos 
(que mal suena eso :D) y lo instalas vía pip/easy_install... Esto lleva 
a que si no tienes cuidado, esa nueva librería que instalas, puede tirar 
de dependencias y actualizar alguna de las librerías que ya tenías 
previamente instaladas vía sistema de paquetes, pudiendo provocar 
mal-funcionamientos en otras aplicaciones como efecto colateral.


Una solución a este problema es usar virtualenv, y acotar el entorno de 
aplicación.


La idea es desarrollar la app usando en la medida de lo posible las 
versiones empaquetadas de cada distribución, para en un momento dado, 
empaquetarlas directamente en paquete de la distribución.


El tema es desarrollar/probar sobre múltiples distribuciones y 
automatizar todos estos tests sin tener que irte a máquinas virtuales 
para cada distribución (incluido docker), sino algo más liviano... es 
decir, crear un virtualenv para cada distribución en la que quieras 
probar tu app, con todas esas librerias/utilidades que van 
preempaquetadas, tenerlas en la misma versión en tu virtualenv y poder 
acotar problemas, etc...


Después de todo este rollo, viene la pregunta ¿Sabéis si existe algún 
sitio donde se publiquen todos los paquetes python que instala cada 
distribución en un formato tipo al que genera pip freeze para poder 
regenerar el entorno?


Y ya puestos, si tenéis experiencia con algún entorno de tests, que pros 
y contras les veis...


Un cordial saludo.


___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Servidores web en python

2016-09-26 Por tema Antonio Beamud Montero

El 25/09/16 a las 13:51, Chema Cortes escribió:
Se puede dar un buen servicio con apache, pero conseguir que sea 
escalable es complicado. Mientras, nginx se adapta muy bien a los 
incrementos de demandas, sobre todo si se trata de enviar streams de 
datos.
Hola Chema, ¿en que casos crees que apache no escala bien? Hasta ahora, 
los casos que me he encontrado yo, no eran problema de apache, sin el 
backend detrás de él.


Un cordial saludo.
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Internalización en Python

2015-10-29 Por tema Antonio Beamud Montero

El 28/10/15 a las 21:29, Rafael Cantos escribió:

Buenas a todos

¿Qué me recomendais para internalizacionar un programa en python? Aún 
no he empezado a desarrollarlo. Mi Linux tiene la versión 2.7.9.
Por lo que he visto en la documentación oficial, es gettext, pero no 
sé si hay alternativas y si son mejores. he visto algún módulo para 
python 3, pero como no tengo esta versión (y creo que me quedo en la 
2.7.9 por compatibilidad).




Échale un vistazo a Babel (http://babel.pocoo.org/). La he usado en 
varios proyectos y está muy bien, no solo para internacionalización, 
sino también para localización.


Un saludo.

___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] ¿Código de python que merece ser estudiado?

2015-08-04 Por tema Antonio Beamud Montero

El 04/08/15 a las 13:56, Chema Cortes escribió:
El 3 de agosto de 2015, 21:10, Carlos Zuniga carlos@gmail.com 
mailto:carlos@gmail.com escribió:


2015-08-02 22:01 GMT-05:00 AGTUGO agt...@gmail.com
mailto:agt...@gmail.com:
 Les pido compartir aquel proyecto donde hayan visto un código
python que
 merece la pena ser estudiado:

 -Por su belleza, simplicidad.
 -Por el conocimiento que adquieres después de estudiarlo.
 -Por lo bien comentado que esta.




Yo recomendaría un proyecto que con el paso de los años se ha vuelto 
bastante grande, pero que podría ser un buen ejemplo de como crear una 
arquitectura de componentes reusables, esa es el zope toolkit (muchos de 
esos componentes se están usando como base para otros proyectos, por 
ejemplo zope.interface se usa intensivamente en el core de pyramid, que 
permite llevar a cabo la programación por contrato, con conceptos tan 
atractivos como los adaptadores)

Aquí toda la lista de paquetes:

http://docs.zope.org/zopetoolkit/releases/packages-trunk.html

Y por ejemplo, uno de los componentes nucleares, el código para el 
citado zope.interface:


https://github.com/zopefoundation/zope.interface


___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Eficiencia de las listas

2013-08-06 Por tema Antonio Beamud Montero

El 05/08/13 21:54, Chema Cortes escribió:

Últimamente, estoy realizando estudios sobre la eficiencia de
distintos códigos python. Mirando qué tipo de colección podía ser más
eficiente según qué tareas, me encuentro con el siguiente párrafo en
la documentación de [deque][1]:

Deques support thread-safe, memory efficient appends and pops from
either side of the deque with approximately the same O(1) performance
in either direction.

Though list objects support similar operations, they are optimized for
fast fixed-length operations and incur O(n) memory movement costs for
pop(0) and insert(0, v) operations which change both the size and
position of the underlying data representation.

He comprobado que, efectivamente, el costo de insertar elementos al
principio de una lista es mucho mayor que añadir elementos al final de
la lista (x1).

En estos momentos , necesito trabajar con listas de números muy largas
( 10e6 elementos) para trocear en dos pedazos, invertir uno de ellos
y volverlos a empalmar (método 2-opt). Una forma de expresarlo:

L[i+1:j+1] = L[j:i:-1]   con i+1j

que equivale a:

L[:i] + L[j:i:-1] + L[j+1:]

Esta última expresión, aunque más clara, es poco eficiente al tener
que crear una nueva lista partiendo de tres sublistas intermedias.

Los elementos no cambian de valor y tampoco cambia el tamaño de la
lista. Parece que la lista es la estructura más eficiente para esta
tarea (por lo que cuenta la documentación) siempre que no se modifique
en tamaño. Pero me pregunto si hay algún modo de hacer este manejo más
eficiente, tal vez usando alguna otra estructura, en python o numpy,
que mejore estas tareas de corte y empalme. Intuyo que con arrays se
reducen las necesidades de memoria, pero en estos momentos, la memoria
es lo que menos me preocupa. Busco un método genérico que pueda valer
para cualquier otro tipo de datos (eg: lista de vectores).




Yo me decanté por usar numpy para resolver este tipo de problemas, 
aunque mis listas eran un orden de magnitud más pequeñas, después de 
hacer varias pruebas, el uso de las listas para operaciones simples, es 
tanto o más eficiente usando listas de python que crear arrays en numpy 
(bueno dependiendo de la operación), pero yo necesitaba métodos como 
'diff', 'where', etc.. que si que marcaban diferencias respecto a mis 
anteriores implementaciones.


Estaré muy atento a las conclusiones que llegues :-)

Un saludo.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] recomendacion para comunicacion cliente-servidor, ambos en la misma maquina

2012-10-29 Por tema Antonio Beamud Montero

El 26/10/12 18:46, Carlos Zuniga escribió:

2012/10/26 Jose Caballero jcaballero@gmail.com:

(perdon, he enviado el mensaje a medias por error)



El 26 de octubre de 2012 12:21, Jose Caballero jcaballero@gmail.com
escribió:


Hola,


tengo un proceso 'daemon' escrito en python. Esta corriendo el 100% del
tiempo.
Necesitaria que algunos scripts que se ejecutan desde la linea de
comandos, tambien escritos en python, sean capaces de enviarle mensajes a
ese daemon.

No hay problemas de seguridad ni de autenticacion. Ambos procesos se
ejecutan en la misma maquina, y se presupone que las etapas de
autenticacion/autorizacion ya se han hecho antes.
Por otro lado, al estar en la misma maquina, y por tratarse de mensajes
muy cortos, no hay problemas de eficiencia.

Cual es la forma mas sencilla que me recomiendan para implementar la
comunicacion?
Una busqueda en google me da dos posibles alternativas (o quizas son la
misma y a mi me parecen diferentes):


- usar un servidor http (puede el ser el que trae python) y escuchar
llamadas hechas por ejemplo con libcurl

- sockets.

Ando algo perdido. Cualquier sugerencia (o link donde pueda aprender) es mas
que bienvenida.


Una opción es utilizar twisted:
http://twistedmatrix.com/trac/

Y una más para que invesgues es usar dbus.

Saludos

Otras opciones son:

Puedes echarle un vistazo a Pyro, si ambas partes están implementadas en 
python:

http://pypi.python.org/pypi/Pyro4

Más flexible sería usar CORBA, por ejemplo omniORB, lo que te permite 
usar diferentes lenguajes y es muy, muy rápido.


Un saludo.


___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Saludos y Pregunta. (Django vs Web2py)

2010-07-28 Por tema Antonio Beamud Montero

Rafael Enrique Ortiz Guerrero escribió:

Saludos Cordiales.

Soy nuevo en esta lista, pero he usado python desde hace un buen tiempo,
y aunque no soy muy bueno me encanta este lenguaje.

Estoy planeando empezar a utilizar un framework para hacer una aplicación Web
y quisiera saber que me recomendarían

Django o Web2py ? , me gustaría tener razones muy solidas para usar
uno u otro pero
no tengo conocimientos profundos de arquitectura de software.


  


Pylons ;-)



Gracias de antemano por la atención prestada!.

Rafael Ortiz
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

  


___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Liado con SOAP

2010-06-08 Por tema Antonio Beamud Montero

Daniel Garcia escribió:

El mar, 08-06-2010 a las 13:06 +0200, Oswaldo Hernández escribió:
  

Hola,

Te recomiendo pasar de SOAP, e incluso de XMLRPC y utilizar una api http
rest + json o xml, similar a la api de twitter [1], todo se basa en una
petición a una url (GET o POST) y los datos/respuestas vienen en xml o
en json, o incluso en los dos dependiendo de la extensión de la url, por
ejemplo:

http://api.twitter.com/1/statuses/public_timeline.json

Esto es compatible con casi todos los lenguajes de manera fácil, casi
sin necesidad de añadidos.

[1] http://apiwiki.twitter.com/Twitter-API-Documentation
  
  


+1

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Threads con operaciones I/O en Python

2010-06-08 Por tema Antonio Beamud Montero

lasizoillo escribió:

El día 8 de junio de 2010 16:11, Antonio Beamud Montero
antonio.bea...@gmail.com escribió:
  

Fél
Si los hilos son de proceso están muy ligados a E/S te recomiendo gevent
(http://www.gevent.org/). El api es muy similar a trabajar con hilos, pero
por debajo usa libevent, para trabajar de forma asincrona.




No entiendo las ventajas de usar gevent para este caso concreto.
Entendería usarla si se dieran las siguientes condiciones:
 * No va a tener problemas con librerias que no cooperan
 * Va a necesitar de hilos a cascoporro y quiere minimizar el overhead
 * Va a sacar partido de usar los pollers (kevent, epoll, ...) que
proporciona libevent.
 * Evitar cambios de contexto en los hilos le va a suponer una ventaja

El primer punto lo veo conflictivo en su caso. Porque va a usar
librerias que no van a cooperar con los greenlets. Así que usar gevent
le puede dar más problemas que ventajas.

  


Cierto, he leido su mensaje un poco por encima y no me he fijado 
demasiado, me he guiado más por el asunto del mensaje.



No creo que vaya a necesitar de muchos hilos. Así que el número de
hilos python a usar no debería suponer mucho overhead. Tampoco creo
que vaya a notar mucha diferencia entre un poller como select o uno
como epoll si el numero de eventos registrados es mínimo.

  


Bueno, aqui depende de como lo programes, puedes lanzar un Greenlet por 
acción, evento, lo que sea, son muy ligeros.



¿Me estoy perdiendo algo del maravilloso framework gevent? ¿De qué
forma ventajosa se podría utilizar en este caso concreto? También es
verdad que si usa  gevent mediante monkey-patching la prueba es gratis
;-)

  


No he he seguido todo el hilo, como te comentaba. Puede que si mira 
gevent, a lo mejor diseña de otra forma su aplicación o le da alguna 
idea de como resolver algún problema que se pueda presentar, bien ahora, 
bien en el futuro.


Saludos.

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


[Python-es] Dive Into Python Must Die

2010-04-26 Por tema Antonio Beamud Montero

FYI via reddit :)

http://oppugn.us/posts/1272050135.html

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/