[pyar] Timeouts para codigo de terceras partes: PyThreadState_SetAsyncExc?

Sebastián Seba ssebastianj en gmail.com
Lun Ene 5 21:28:42 ART 2015


El 5 de enero de 2015, 20:35, Roberto Alsina <ralsina en netmanagers.com.ar>
escribió:

> 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.
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>

Justamente en un proyecto que tenía que utilizar procesos hice eso,
descomponer un objeto en objetos más básicos y "pickeables". Luego, lo
metía en una Queue y en el proceso "reconstruía" nuevamente el objeto.

En ese entonces era un newbie en cuanto a multi-processing por lo que no
estoy seguro si fue la mejor solución pero... funcionaba.

Saludos.

-- 
*Sebastián J. Seba*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20150105/e7b2e923/attachment.html>


More information about the pyar mailing list