程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了尝试接收 PyTorch 张量时争夺管道资源大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决尝试接收 PyTorch 张量时争夺管道资源?

开发过程中遇到尝试接收 PyTorch 张量时争夺管道资源的问题如何解决?下面主要结合日常开发的经验,给出你关于尝试接收 PyTorch 张量时争夺管道资源的解决方法建议,希望对你解决尝试接收 PyTorch 张量时争夺管道资源有所启发或帮助;

我遇到一个问题,当一个子进程尝试接收 PyTorch 张量而另一个子进程请求不同的管道连接时,python 中的子进程会竞争管道资源。

这是我的代码(在 Ubuntu 18.04 上运行):


import time
from multiprocessing import Process,Pipe
import torch


def send(conn):
    a,b = Pipe()
    data = [torch.rand(1) for _ in range(20)]
    print('start sending',time.time())
    conn.send(data)
    print('finish sending',time.time())

    while True:
        if a.poll():
            pass
        # else:
        #    time.sleep(0.1)


def recv(conn):
    while True:
        if conn.poll():
            print('start receiving',time.time())
            conn.recv()
            print('finish receiving',time.time())
            break
        else:
            time.sleep(0.1)


if __name__ == '__main__':
    recv_conn,send_conn = Pipe()

    send_proc = Process(target=send,args=(send_conn,))
    recv_proc = Process(target=recv,args=(recv_conn,))

    send_proc.start()
    recv_proc.start()

    recv_proc.join()
    send_proc.terminate()

此代码需要几秒钟才能接收到 Torch 张量。但是如果去掉send方法最后两行的注释,接收torch张量的速度会非常快。

这个问题只在发送火炬张量时出现。

有人知道这个问题的原因吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的尝试接收 PyTorch 张量时争夺管道资源全部内容,希望文章能够帮你解决尝试接收 PyTorch 张量时争夺管道资源所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: