torch.multiprocessing 的源代码
# mypy: 允许未类型化定义
"""torch.multiprocessing 是对原生 :mod:`multiprocessing` 模块的封装。
它注册了自定义的 reducer,这些 reducer 使用共享内存来提供共享
同一数据在不同过程中的不同视角。一旦张量/存储被移动到
共享内存(见 :func:`~torch.Tensor.share_memory_`),就可以将其发送到其他进程而无需复制。
API 与原始模块 100%兼容 - 只需更改
该 API 与原始模块 100%兼容 - 只需更改
将 `import multiprocessing` 替换为 `import torch.multiprocessing` 以拥有所有功能
通过队列或通过其他机制发送的张量,移动到共享内存
中。
由于 API 的相似性,我们没有记录这个包的大部分内容
内容,并建议参考原始模块的优秀文档。
""
导入
多进程
导入
系统
导入
火炬
from .reductions 导入 init_reductions
全部 = [
"设置共享策略",
获取分享策略,
获取所有共享策略]
from 多进程
导入 * # noqa: F403
全部 +=
多进程.
全部
# noqa: PLE0605 类型:忽略[attr-defined]
此调用向此模块添加了一个针对 Linux 的 prctl(2)包装函数。
# 请参阅 https://github.com/pytorch/pytorch/pull/14391 获取更多信息。
火炬._C._multiprocessing_init()
添加辅助函数以启动 N 个进程并等待其中任何一个完成。这依赖于 `mp.get_context`,该功能是在 Python 3.4 中添加的。
这取决于 `mp.get_context`,该功能是在 Python 3.4 中添加的。
from .spawn 导入 (
环境变量并行启动,
进程上下文,
进程退出异常,
处理引发的异常,
启动,
启动上下文,
启动进程,
)
如果
系统模块.
平台 == "darwin"
或者
系统模块.
平台 ==
win32:
分享策略 =
"文件系统"
所有分享策略 = {
文件系统}
否则:
分享策略 =
文件描述符
所有分享策略 = {
"文件描述符",
"文件系统"}
[文档]def set_sharing_strategy(new_strategy):
"设置共享 CPU 张量的策略。"
Args:
新策略(str 类型):所选策略的名称。应该是 :func:`get_all_sharing_strategies()` 返回的值之一。
the values returned by :func:`get_all_sharing_strategies()`.
"""
全局_共享策略
断言新策略在_all_sharing_strategies 中
_sharing_strategy = new_strategy
[文档]def get_sharing_strategy():
返回当前共享 CPU 张量的策略。
返回 _sharing_strategy
[文档]def get_all_sharing_strategies():
返回当前系统支持的共享策略集合。
返回所有共享策略
定义
设置线程名称(
姓名: str) ->
无:
设置当前线程的名称。
参数:
name (str): 当前线程的名称。
"""
火炬._C.
设置线程名称(
姓名)
定义
获取线程名称() -> str:
获取当前线程的名称。
返回值:
str: 当前线程的名称。
"""
返回
火炬._C.
获取线程名称()
初始化缩减()