Tengo una función de descarga que descarga múltiples archivos de forma paralela. Uso multiprocessing.Pool.map_async
para descargar diferentes fragmentos del mismo archivo. Me gustaría mostrar una barra de estado de la descarga. Para esto, necesito saber el total de bytes que ya ha sido descargado (total_bytes_dl
).Compartiendo una variable entre procesos
pool = multiprocessing.Pool(processes)
mapObj = pool.map_async(f, args)
while not mapObj.ready():
status = r"%.2f MB/%.2f MB" % (total_bytes_dl/1024.0/1024.0, filesize/1024.0/1024.0,)
status = status + chr(8)*(len(status)+1)
print status,
time.sleep(0.5)
¿Hay una manera de establecer una variable que será compartido entre todos estos procesos y el proceso principal, por lo que cada proceso puede añadir la cantidad de bytes que acaba de descargar?
no se puede asignar el objeto compartido ctypes: 'RuntimeError: los objetos sincronizados solo se deben compartir entre procesos a través de la herencia' – iTayb