草庐IT

MPI_Recv

全部标签

python - mpi4py 发送/接收带标签

如何将进程的等级作为标记传递给mpi4py.MPI.COMM_WORLD.Send()函数并使用mpi4py.MPI.COMM_WORLD.Recv()正确接收它?我指的是以下sendingandreceivingmessagesbetweentwoprocessesusingSendandRecvfunctions的代码示例#passRandomDraw.pyimportnumpyfrommpi4pyimportMPIcomm=MPI.COMM_WORLDrank=comm.Get_rank()randNum=numpy.zeros(1)ifrank==1:randNum=numpy

python - 是否可以使用 MPI 将数据从 Fortran 程序发送到 Python?

我正在开发一种工具来模拟波能转换器,我需要将两个软件包相互耦合。一个程序是用Fortran编写的,另一个是用C++编写的。我需要在每个时间步将信息从Fortran程序发送到C++程序。然而,在将数据发送到C++程序之前,首先需要在Python中对其进行处理。我收到了使用MPI在程序之间传输数据的提示。我现在正尝试将一个简单的字符串从Fortran代码发送到Python,但Python代码卡在接收命令处。我的Fortran代码如下所示:USEGlobalVariablesUSEMPIIMPLICITNONECHARACTER(LEN=10)::astringINTEGER::comm,r

python - 如何从 Python 中的另一个线程中止 socket.recv()

我有一个等待连接的主线程。它生成客户端线程,这些线程将回应来自客户端(在本例中为telnet)的响应。但是说我想在一段时间后关闭所有套接字和所有线程,比如在1个连接之后。我该怎么做?如果我从主线程执行clientSocket.close(),它不会停止执行recv。只有当我首先通过telnet发送内容时它才会停止,然后它会在进一步发送和接收时失败。我的代码是这样的:#EchoserverprogramimportsocketfromthreadingimportThreadimporttimeclassClientThread(Thread):def__init__(self,clie

python - 使用哪个 python mpi 库?

我开始使用MPI进行一些模拟,并希望使用Python/scipy进行编程。科学site列出了许多mpi库,但我希望从任何使用过这些库的人那里得到关于质量、易用性等方面的反馈。 最佳答案 我听说过关于mpi4py的好消息(但我自己从未使用过)。这是一位研究了所有备选方案的同事的建议。他提到完整性是一个优势。 关于python-使用哪个pythonmpi库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com

go - 尝试 Recv 返回 channel 关闭,尽管它是打开的

我正在尝试在Go中编写一个函数来监视channel并记录通过它发送的内容。funcmonitorChannel(inChannel,outChannelreflect.Value,fidint64,cond*sync.Cond){for{cond.L.Lock()vartoLogreflect.ValuevarokboolfortoLog,ok=inChannel.TryRecv();!toLog.IsValid();{//whilenovaluereceivedif!ok{cond.L.Unlock()return}cond.Wait()}outChannel.Send(toLog)

混帐克隆 : GnuTLS recv error (-9): A TLS packet with unexpected length was received

我正在尝试克隆一个git存储库,但在执行命令时收到以下错误:GnuTLSrecverror(-9):ATLSpacketwithunexpectedlengthwasreceived.我的客户端机器是Ubuntu14.04。 最佳答案 这是@IvanTernovtsiy所说的已知错误,但有解决方法从您的系统中删除当前的GITsudoapt-getpurgegit下载GITdebgit_1.9.1-1_amd64.deblink执行下载的DEB。 关于混帐克隆:GnuTLSrecverro

c++ - 为什么 sys socket recv 函数不填充数据而是返回字节长度?

我正在编写一个C++客户端。客户端通过TCP协议(protocol)成功连接到服务器并发送数据。我写了下面的代码来接收数据:chardata[9];intreceived_size=recv(fd,data,9,flags);std::stringstr{data};//str.empty()istrue哪些标志是MSG_NOSIGNAL。问题是执行此行后,received_size为9,但数据长度为零。 最佳答案 如果recv返回一个值,那么这是接收到的字节数。问题是您使用了错误的函数来确定您接收的数据。您正在使用的std::st

linux - EBADF while recv after epoll_wait

我遇到了以下问题:我有一个接收连接的epoll代码:while(1){intnfds=epoll_wait(epollfd,events,4096,-1);if(nfds==-1){if(errno==EINTR)continue;perror("epoll_wait");exit(EXIT_FAILURE);}for(inti=0;idisconnectDriver(events[i].data.fd);}#elseif(events[i].events&EPOLLHUP){std::coutdisconnectDriver(events[i].data.fd);}#endifif(

c - socket send和recv中FLAG的含义

在Linux手册页中搜索时,我发现关于socket中send和recv的格式如下:发送,ssize_tsend(intsockfd,constvoid*buf,size_tlen,intflags);对于接收,ssize_trecv(intsockfd,void*buf,size_tlen,intflags);但我不确定他们试图讲述有关intflags的内容。在一个示例代码中,我发现标志的值为0(零)。这是什么意思?另外,手册页中下面一行的含义是什么?"TheflagsargumentisthebitwiseORofzeroormoreofthefollowingflags."然后是标

linux - 所选套接字上的套接字 recv 因 etimedout 而失败

我正在使用以下代码片段编写一个服务器-客户端程序来接收数据。ret_l=select(readfds+1,&readfds,NULL,NULL,NULL);if(ret_l!=-1){if(FD_ISSET(myfd,&readfds)){ret_l=recv(myfd,buf,size_of_buf_array,0);if(ret_l==-1)return;}}据我所知,select()ed文件描述符上的recv应该会无误地接收数据。但是我的代码中的recv失败并出现错误ETIMEDOUT。有人请告诉我为什么会这样。还请告诉我一些解决方法,即使在ETIMEDOUT之后也能完全接收数据