Tôi có chức năng tải xuống tải xuống nhiều tệp song song. Tôi sử dụng multiprocessing.Pool.map_async
để tải xuống các phần khác nhau của cùng một tệp. Tôi muốn hiển thị thanh trạng thái của quá trình tải xuống. Đối với điều này, tôi cần phải biết tổng số byte đã được tải xuống (total_bytes_dl
).Chia sẻ biến giữa các quá trình
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)
Có cách nào để đặt biến sẽ được chia sẻ giữa tất cả các quy trình này VÀ quy trình chính, vì vậy, mọi quá trình có thể nối thêm số lượng byte vừa tải xuống?
bạn không thể ánh xạ đối tượng được chia sẻ của ctypes: 'RuntimeError: Các đối tượng được đồng bộ hóa chỉ nên được chia sẻ giữa các quá trình thông qua kế thừa' – iTayb