Anotaciones en Python

mayo 15, 2012 under Python

Después de ver cómo funcionan las anotaciones en Java, pasaremos a ver cómo funcionan las anotaciones en python. Al ser un lenguaje menos estricto, python permite definir las anotaciones de forma más directa.

Por ejemplo, si queremos que nos avise con un print cada vez que ejecutemos ciertas funciones, no tenemos más que definir una interfaz que imprima el log que queremos antes de ejecutar la función:

from functools import wraps
def log(func):
 @wraps(func)
 def log_func(*args, **kwargs):
  print "log"
  return func(*args, **kwargs)
 return log_func
@log
def func1():
 print "Ejecutando funcion uno"
@log
def func2():
 print "Ejecutando funcion uno"
func1()
func2()

Este código devolvería el siguiente resultado:

log
Ejecutando función uno
log
Ejecutando función dos

También podemos usar las anotaciones para cosas más útiles, como indicar a python que cierta función se va a ejecutar en modo asíncrono en un hilo diferente:

from multiprocessing import process
def run_async(func):
 @wraps(func)
 def async_func(*args, **kwargs):
 func_hl = Process(target = func, args = args, kwargs = kwargs)
 func_hl.start()
 return func_hl
 return async_func
@run_async
 def process():
 print "Ejecutado en asíncrono"

Related Posts:

comments: 0 » tags: ,

Alta concurrencia en Java

julio 30, 2010 under Java

Cuando nos enfrentamos a aplicaciones con una alta concurrencia, solemos encontrarnos con una serie de problemas tipo. En este artículo me centraré en los problemas de recursos (cpu y memoria), dejando los problemas de sincronización para otro futuro artículo. De momento me centraré en los problemas más típicos y sus soluciones más directas.

Cuando descubrimos los hilos y las ventajas del procesamiento en paralelo puede ocurrir que acabemos abusando de su uso. Si el problema es que tenemos una gran cantidad de hilos (¿100? ¿1000?) simultáneos, el procesador estará saltando de uno a otro sin parar, sin dejar que realmente terminen, por muy corta que sea su ejecución real. Y con el tiempo se irán encolando más y más hilos que sólo ralentizarán el proceso. A eso hay que sumarle que el coste de crear y destruir hilos puede llegar a ser significativo cuando hablamos de tantos hilos a la vez.
Click here to read more.. »

Related Posts: