# -*- coding: utf-8 -*-
from multiprocessing import Process
from time import sleep
# En multiprocesamiento, los procesos se generan creando un objeto Process
# y luego llamando a su método start()
# Process utiliza la API de threading.Thread
def funcionA(time):
print("Ejecutando una función que dura %s segundos" % time)
sleep(time)
def ejecutarConTiempoLimite(func, args, time):
"""
Ejecuta una función con un limite de tiempo
Tiene que recibir:
func: el nombre de la función a ejecutar
args: una tupla con los argumentos a pasar a la función
Devuelve True si ha finalizado la función correctamente
https://docs.python.org/2/library/multiprocessing.html
"""
p = Process(target=func, args=args)
p.start()
p.join(time)
if p.is_alive():
p.terminate()
print("Ha finalizado por timeout")
return False
print("Se ha ejecutado correctamente")
return True
if __name__ == '__main__':
ejecutarConTiempoLimite(funcionA, (1.5, ), 2.5) # True
ejecutarConTiempoLimite(funcionA, (3.5, ), 2.5) # False
Comentarios sobre la versión: Versión 1.0 (2)