大佬教程收集整理的这篇文章主要介绍了尝试接收 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,请注明来意。