Mam funkcję pobierania, która pobiera wiele plików równolegle. Używam multiprocessing.Pool.map_async
w celu pobrania różnych fragmentów tego samego pliku. Chciałbym pokazać pasek statusu pobierania. W tym celu muszę znać całkowite bajty, które zostały już pobrane (total_bytes_dl
).Udostępnianie zmiennej między procesami
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)
Czy istnieje sposób, aby ustawić zmienną, która będzie wspólny wśród wszystkich tych procesów i głównego procesu, dlatego każdy proces może dołączyć ilość bajtów, które właśnie ściągnięty?
Nie można odwzorować ctypu udostępnionego obiektu: 'RuntimeError: Zsynchronizowane obiekty powinny być udostępniane między procesami poprzez dziedziczenie' – iTayb