[pyar] multiprocessing ejecuta secuencialmente los procesos

Claudio Freire klaussfreire en gmail.com
Vie Ago 19 16:04:50 ART 2016


On Fri, Aug 19, 2016 at 3:03 PM, Javier Marcon <javiermarcon en gmail.com> wrote:
> Hola tengo un código que quiero correr con multiprocessing para que me
> corra varios procesos al mismo tiempo, pero al correrlo noto que todos
> los procesos corren en forma secuencial y no en paralelo. el código es:
>
> from multiprocessing import Pool
> from .models import Maquina
>
> def check_machines():
>     maqs = []
>     maquinas = Maquina.objects.order_by('-empresa') #all()
> #select_related('Empresa')
>     #print type(maquinas)
>     for maquina in maquinas:
>         maqs.append(maquina)
>     pool = Pool(processes=5) # process per core
>     pool.map(do_check, maqs)
>
> def do_check(maquina):
>     print "procesando %s" % maquina.host
>     time.sleep(10)
>     print "-> %s" % maquina.host
>
> Como deberia ponerlo para que corra todos los do_check simultaneamente?

Como no creo que tu código real tenga el sleep, es más que probable
que tengas contención en la base de datos, si estás laburando con la
base de datos en do_check.


Más información sobre la lista de distribución pyar