def reduce_storage(storage):
from . import get_sharing_strategy
if storage.is_cuda:
metadata = storage._share_cuda_()
cache_key = metadata[1]
rebuild = rebuild_storage_cuda
elif get_sharing_strategy() == 'file_system':
metadata = storage._share_filename_()
cache_key = metadata[1]
rebuild = rebuild_storage_filename
storage._shared_incref()
else:
fd, size = storage._share_fd_()
if sys.version_info[0] == 2:
df = multiprocessing.reduction.reduce_handle(fd)
else:
df = multiprocessing.reduction.DupFd(fd)
cache_key = fd_id(fd)
metadata = (df, size)
rebuild = rebuild_storage_fd
shared_cache[cache_key] = storage._weak_ref(StorageRef)
return (rebuild, (type(storage),) + metadata)
评论列表
文章目录