ここで類似の質問は見つかりませんでしたので、ここに入ります: 次のコードは常に(False, None)
を出力しますか? (True, None)
でなければならない場合は、プロセス0の後にtest()
が3秒後に呼び出された場合は、メッセージを送信しますか?また、私がtest()
の前にreq.wait()
と呼ぶと、私は必要な出力が得られますが、ブロック不可能ではないので、test()
は目的を失います(3秒間に任意のソースからメッセージを受け取ることができます私はmpi4pyには専門家ではないが、それは公正な仮定のように思えるそのMPI Cの対応()のように振る舞うと仮定すると、その後実際に、少し驚きがここにありますMpi4py mpi_testは常にfalseを返します
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'をループに入れるとどうなりますか? – Zulan
奇妙な。 'test'コマンドを2回続けて呼び出すと、2番目(および後で)の出力が良好になります。それでも、正常な動作ではないので、誰でも私に指示を与えることができれば、それは分かります。 –