【发布时间】:2016-08-03 16:27:45
【问题描述】:
我在这里找不到类似的问题,所以这里是:
为什么下面的代码总是输出(False, None)?不应该是(True, None),如果在进程0发送消息后3秒调用test()?另外,如果我在test() 之前调用req.wait(),我会得到我需要的输出,但是它不是不可阻塞的,所以test() 失去了它的目的(我希望能够告诉进程1 从在它睡觉的那 3 秒内的任何来源)
代码:
import time
from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
if rank == 0:
req = comm.isend(0, 1, tag=0);
req.wait();
elif rank == 1:
req = comm.irecv();
time.sleep(3);
print req.test();
【问题讨论】:
-
您确定这是您正在运行的程序吗?有一些不属于的
;。如果将sleep/test放入循环中会发生什么? -
很奇怪。如果我连续两次调用
test命令,则第二个(以及以后的)输出很好。不过,这不是正常行为,所以如果有人可以给我任何进一步的指示,将不胜感激..