[pyar] Timeouts para codigo de terceras partes: PyThreadState_SetAsyncExc?
Roberto Alsina
ralsina en netmanagers.com.ar
Lun Ene 5 20:35:14 ART 2015
On 05/01/15 20:30, Andres Riancho wrote:
> Alejandro,
>
> On Mon, Jan 5, 2015 at 7:36 PM, Alejandro Santos <listas en alejolp.com> wrote:
>> 2015-01-05 20:58 GMT+01:00 Andres Riancho <andres.riancho en gmail.com>:
>>> La pregunta entonces es... que otras soluciones tengo a este problema?
>>>
>> import multiprocessing
>> import time
>>
>> def exec_with_timeout(f, args, timeout):
>> p = multiprocessing.Process(target=f, args=args)
>> p.start()
>> p.join(timeout)
>> if p.is_alive():
>> p.terminate()
>>
>> def bad_func(t):
>> while True:
>> time.sleep(t)
>>
>> exec_with_timeout(bad_func, (5.0, ), 0.1)
> Gracias por la buena propuesta, despues de enviar el email estuve
> viendo eso y creo que en una gran cantidad de casos sirve pero... a mi
> no me va a servir ya que la respuesta de la libreria es un objeto que
> NO se puede serializar, por lo que no lo puedo pasar entre el
> subproceso (multiprocessing.Process) y el proceso principal.
>
> Alguna idea de como hacer un workaround de eso? Estuve leyendo un
> poco sobre multiprocessing.Namespace, pero no estoy seguro, deberia
> probarlo.
Lo podes serializar "a mano" convirtiendolo en objetos más básicos.
More information about the pyar
mailing list