mpi4py中接收酸洗项目的非阻塞方式

2024-09-25 00:34:32 发布

您现在位置:Python中文网/ 问答频道 /正文

对于从另一个过程接收酸洗项目的过程,是否有任何非阻塞方式。Irecv仅适用于numpy数组。我想要一个对字典有用的函数。在


Tags: 项目函数numpy字典过程方式数组irecv
1条回答
网友
1楼 · 发布于 2024-09-25 00:34:32

根据tutorial,看起来irecv()并没有真正实现,因此您必须采取另一种方法:与其发布接收并使用Test或等待请求准备就绪,不如使用Probe来测试是否有消息等待接收,并在出现以下情况时使用(阻塞)receive来获取:

#!/usr/bin/env python
from mpi4py import MPI
import time

comm = MPI.COMM_WORLD
rank = comm.Get_rank()

if rank == 0:
   data = {'a': 7, 'b': 3.14}
   time.sleep(3)
   comm.send(data, dest=1, tag=11)
elif rank == 1:
   while not comm.Iprobe(source=0, tag=11):
        print 'rank 1 Doing some work...'
        time.sleep(1)
   rdata = comm.recv(source=0, tag=11)
   print 'rank 1: got ', rdata

跑步带来:

^{pr2}$

相关问题 更多 >