小编gtg*_*gtg的帖子

Pytorch 的 share_memory_() 与内置 Python 的共享内存:为什么在 Pytorch 中我们不需要访问共享内存块?

在尝试了解内置包multiprocessingPytorch 的multiprocessing包时,我观察到两者之间存在不同的行为。我觉得这很奇怪,因为Pytorch 的包与内置包完全兼容。

具体来说,我指的是进程之间共享变量的方式。在 Pytorch 中,张量通过 inplace 操作移动到共享内存share_memory_()。另一方面,通过使用shared_memory模块,我们可以得到与内置包相同的结果。

我很难理解两者之间的区别在于,使用内置版本,我们必须显式访问启动进程内的共享内存块然而,我们不需要使用 Pytorch 版本这样做。

这是一个Pytorch的玩具示例,显示了这一点:

import time

import torch
# the same behavior happens when importing:
# import multiprocessing as mp
import torch.multiprocessing as mp


def get_time(s):
    return round(time.time() - s, 1)


def foo(a):
    # wait ~1sec to print the value of the tensor.
    time.sleep(1.0)
    with lock:
        #-------------------------------------------------------------------
        # WITHOUT explicitely accessing the shared memory block, we can observe …
Run Code Online (Sandbox Code Playgroud)

python shared-memory multiprocessing pytorch

5
推荐指数
2
解决办法
2969
查看次数

标签 统计

multiprocessing ×1

python ×1

pytorch ×1

shared-memory ×1