Python全栈学习笔记day 38:进程间通信:管道(multiprocessing.Pipe)、进程之间的数据共享(multiprocessing.Manager)、进池Pool模块、回调函数


目录

一、进程间通信:管道(multiprocess.Pipe)

二、管道实现生产者消费模型

三、进程之间的数据共享

四、进程池和multiprocessing.Pool模块

五、回调函数



一、进程间通信:管道(multiprocess.Pipe)

管道示意图:

 

子进程接收主进程消息:

from multiprocessing import Pipe,Process

def func(conn1,conn2):
    conn2.close()
    while True:
        try :
            msg = conn1.recv()
            print(msg)
        except EOFError:
            conn1.close()
            break

if __name__ == '__main__':
    conn1, conn2 = Pipe()
    Process(target=func,args = (conn1,conn2)).start()
    conn1.close()
    for i in range(20):
        conn2.send('吃了么')
    conn2.close()

代码解释:
EOFError:管道取完所有数后,继续取数据时所报的错误
同一个管道在主进程管道口A(conn1.close())的关闭,不会影响子进程的管道口A的接受数据(conn1.recv())

二、管道实现生产者消费模型

from multiprocessing import Process,Pipe,Lock

def consumer(produce, consume,name,lock):
    produce.close()
    while True:
        lock.acquire()
        
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
错误消息"error:torch.distributed.elastic.multiprocessing.api:failed (exitcode: 1) loc"是指在使用torch.distributed.elastic.multiprocessing模块时发生了错误并导致程序退出。这个错误通常涉及到使用分布式训练框架时的问题。 首先,"failed (exitcode: 1)"表示某个子进程在运行过程中出现了错误,其退出代码为1。这可能是由于代码bug、系统设置问题或者资源不足等原因引起的。要解决这个问题,我们可以通过查看详细的错误消息或运行日志来确定具体的发生情况。然后,我们可以根据出错的子进程以及错误信息来检查代码中的bug或者其他问题。 其次,"torch.distributed.elastic.multiprocessing.api"是PyTorch中的一个模块,该模块为弹性分布式训练提供了一组工具和函数。弹性分布式训练是一种分布式训练的方法,能够在规模变化、资源变化和故障恢复等情况下动态地调整训练策略。因此,如果我们在弹性分布式训练中使用了torch.distributed.elastic.multiprocessing模块,并且发生了错误,就需要仔细检查我们的代码和配置文件,确保没有错误或者不兼容的设置。 最后,"loc"可能是指出错的位置。要确认错误的具体位置,我们可以查看完整的错误消息或者调试信息。根据出错信息所指示的位置,我们可以定位到具体的代码部分,并对可能的问题行排查和修复。 综上所述,当我们遇到"error:torch.distributed.elastic.multiprocessing.api:failed (exitcode: 1) loc"这个错误时,需要根据错误信息确定出错的具体位置,并检查代码、配置文件和资源等方面是否存在错误或问题,从而解决这个错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值