[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