| """ | 
 | torch.multiprocessing is a wrapper around the native :mod:`multiprocessing` | 
 | module. It registers custom reducers, that use shared memory to provide shared | 
 | views on the same data in different processes. Once the tensor/storage is moved | 
 | to shared_memory (see :func:`~torch.Tensor.share_memory_`), it will be possible | 
 | to send it to other processes without making any copies. | 
 |  | 
 | The API is 100% compatible with the original module - it's enough to change | 
 | ``import multiprocessing`` to ``import torch.multiprocessing`` to have all the | 
 | tensors sent through the queues or shared via other mechanisms, moved to shared | 
 | memory. | 
 |  | 
 | Because of the similarity of APIs we do not document most of this package | 
 | contents, and we recommend referring to very good docs of the original module. | 
 | """ | 
 | import sys | 
 | from .reductions import init_reductions | 
 | import multiprocessing | 
 |  | 
 | __all__ = ['set_sharing_strategy', 'get_sharing_strategy', | 
 |            'get_all_sharing_strategies'] | 
 |  | 
 |  | 
 | from multiprocessing import * | 
 |  | 
 |  | 
 | __all__ += multiprocessing.__all__ | 
 |  | 
 |  | 
 | if sys.version_info < (3, 3): | 
 |     """Override basic classes in Python 2.7 and Python 3.3 to use ForkingPickler | 
 |     for serialization. Later versions of Python already use ForkingPickler.""" | 
 |     from .queue import Queue, SimpleQueue | 
 |     from .pool import Pool | 
 |  | 
 |  | 
 | if sys.platform == 'darwin' or sys.platform == 'win32': | 
 |     _sharing_strategy = 'file_system' | 
 |     _all_sharing_strategies = {'file_system'} | 
 | else: | 
 |     _sharing_strategy = 'file_descriptor' | 
 |     _all_sharing_strategies = {'file_descriptor', 'file_system'} | 
 |  | 
 |  | 
 | def set_sharing_strategy(new_strategy): | 
 |     """Sets the strategy for sharing CPU tensors. | 
 |  | 
 |     Arguments: | 
 |         new_strategy (str): Name of the selected strategy. Should be one of | 
 |             the values returned by :func:`get_all_sharing_strategies()`. | 
 |     """ | 
 |     global _sharing_strategy | 
 |     assert new_strategy in _all_sharing_strategies | 
 |     _sharing_strategy = new_strategy | 
 |  | 
 |  | 
 | def get_sharing_strategy(): | 
 |     """Returns the current strategy for sharing CPU tensors.""" | 
 |     return _sharing_strategy | 
 |  | 
 |  | 
 | def get_all_sharing_strategies(): | 
 |     """Returns a set of sharing strategies supported on a current system.""" | 
 |     return _all_sharing_strategies | 
 |  | 
 |  | 
 | init_reductions() |