我们从Python开源项目中,提取了以下9个代码示例,用于说明如何使用multiprocessing.reduction()。
def _winapi_childhandle_after_createprocess_child(self): """Called on Windows in the child process after the CreateProcess() system call. This is required for making the handle usable in the child. """ if WINAPI_HANDLE_TRANSFER_STEAL: # In this case the handle has not been inherited by the child # process during CreateProcess(). Steal it from the parent. new_winapihandle = multiprocessing.reduction.steal_handle( self._parent_pid, self._parent_winapihandle) del self._parent_winapihandle del self._parent_pid # Restore C file descriptor with (read/write)only flag. self._fd = msvcrt.open_osfhandle(new_winapihandle, self._fd_flag) return # In this case the handle has been inherited by the child process during # the CreateProcess() system call. Get C file descriptor from Windows # file handle. self._fd = msvcrt.open_osfhandle( self._inheritable_winapihandle, self._fd_flag) del self._inheritable_winapihandle
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)
def rebuild_storage_fd(cls, df, size): if sys.version_info[0] == 2: fd = multiprocessing.reduction.rebuild_handle(df) else: fd = df.detach() try: storage = storage_from_cache(cls, fd_id(fd)) if storage is not None: return storage storage = cls._new_shared_fd(fd, size) shared_cache[fd_id(fd)] = storage._weak_ref(StorageRef) return storage finally: os.close(fd)