Articles of multiprocesamiento

establecer env var en Python multiprocessing.Process

En el módulo de subproceso Python 2, Popen puede recibir un env . Parece que la forma equivalente de hacerlo con el proceso en módulo de multiprocesamiento es pasar el medio kwargs en args o kwargs , y luego usar os.environ[‘FOO’] = value en el target . ¿Es el camino correcto? ¿Es seguro? Quiero decir, […]

Arreglos de números grandes en la memoria compartida para multiprocesamiento: ¿Hay algún problema con este enfoque?

El multiprocesamiento es una herramienta maravillosa, pero no es tan sencillo utilizar grandes trozos de memoria con ella. Puede cargar trozos en cada proceso y volcar los resultados en el disco, pero a veces necesita almacenar los resultados en la memoria. Y en la parte superior, utiliza la funcionalidad numpy de lujo. He leído / […]

Error de salida de multiproceso Python

Estoy viendo esto cuando presiono Ctrl-C para salir de mi aplicación Error in atexit._run_exitfuncs: Traceback (most recent call last): File “/usr/lib/python2.6/atexit.py”, line 24, in _run_exitfuncs func(*targs, **kargs) File “/usr/lib/python2.6/multiprocessing/util.py”, line 269, in _exit_function p.join() File “/usr/lib/python2.6/multiprocessing/process.py”, line 119, in join res = self._popen.wait(timeout) File “/usr/lib/python2.6/multiprocessing/forking.py”, line 117, in wait return self.poll(0) File “/usr/lib/python2.6/multiprocessing/forking.py”, line 106, […]

Python manager.dict () es muy lento en comparación con el dict regular

Tengo un dictado para almacenar objetos: jobs = {} job = Job() jobs[job.name] = job ahora quiero convertirlo en administrador de uso porque quiero usar multiprocesamiento y necesito compartir este dictamen entre los procesos mgr = multiprocessing.Manager() jobs = mgr.dict() job = Job() jobs[job.name] = job solo al convertir para usar manager.dict () las cosas […]

multiprocesamiento y recolección de basura

En py2.6 +, el módulo de multiprocessing ofrece una clase de grupo, por lo que se puede hacer: class Volatile(object): def do_stuff(self, …): pool = multiprocessing.Pool() return pool.imap(…) Sin embargo, con la implementación estándar de Python en 2.7.2, este enfoque pronto lleva a “IOError: [Errno 24] Demasiados archivos abiertos”. Aparentemente, el objeto de la pool […]

Multiprocesamiento con bloques de contexto “fork” en Linux / Intel Xeon con Python 3.6.1?

Descripción del problema Ajusté el código de esta respuesta un poco (ver más abajo). Sin embargo, cuando se ejecuta este script en Linux (por lo tanto, la línea de comandos: python script_name.py ) imprimirá jobs running: x para todos los trabajos, pero luego parece que se atasca. Sin embargo, cuando uso el método spawn ( […]

multiproceso: TypeError: el objeto ‘int’ no es iterable

Estoy usando el módulo de multiprocessing en Python 3, pero por alguna razón, sigue lanzando el objeto TypeError: ‘int’ object is not iterable cuando ejecuto el progtwig. Esto es lo que hice: def main(i): global urlDepth global row global counter urlDepth = [] row = 0 counter = 0 login(i) crawler(MENU_URL) if __name__ == ‘__main__’: […]

Multiprocesamiento ineficiente de cálculos basados ​​en números.

Estoy tratando de paralelizar algunos cálculos que usan numpy con la ayuda del módulo de multiprocessing de Python. Considere este ejemplo simplificado: import time import numpy from multiprocessing import Pool def test_func(i): a = numpy.random.normal(size=1000000) b = numpy.random.normal(size=1000000) for i in range(2000): a = a + b b = a – b a = a […]

Python rpy2 y matplotlib entran en conflicto cuando se usa multiprocesamiento

Estoy tratando de calcular y generar plots utilizando multiprocesamiento. En Linux, el siguiente código se ejecuta correctamente, sin embargo, en Mac (ML) no lo hace, con el siguiente error: import multiprocessing import matplotlib.pyplot as plt import numpy as np import rpy2.robjects as robjects def main(): pool = multiprocessing.Pool() num_figs = 2 # generate some random […]

combinando el perro guardián de Python con multiproceso o subprocesamiento

Estoy usando el Watchdog de Python para monitorear un directorio determinado para los nuevos archivos que se crean. Cuando se crea un archivo, se ejecuta algún código que genera un comando de shell de subproceso para ejecutar un código diferente para procesar este archivo. Esto debería ejecutarse para cada nuevo archivo que se crea. He […]