我正在使用python中的套接字在localhost上从一个应用程序向另一个应用程序发送一个非常大的字符串。小字符串立即移动,但是大字符串似乎需要更长的时间(我说很大,但我说的最多可能是一两MB)。在我在一个应用程序中执行某些操作之后,我必须坐下来等待几秒钟才能显示在另一个应用程序中。
这里涉及哪些瓶颈?据我所知,对于127.0.0.1上的套接字,我所做的只是将数据从内存中的一个点移动到另一个点。因此,一次传输甚至数百MB应该立即在我的工作站上移动。
答案 0 :(得分:3)
您仍在通过整个网络堆栈移动数据,只是不通过网络接口卡本身。
使用localhost在网络堆栈周围可能会有一些快捷方式,但这很可能取决于您正在使用的系统上如何实现堆栈。无论共享内存还是管道都会快得多。
以下是高级概述:http://docs.python.org/howto/sockets.html
PS:不确定这是否适用于您的情况,但多处理模块有一些方法可以有效地在多个进程之间共享数据。
PPS:您可以尝试使用UDP套接字而不是TCP套接字。这可能会为您提供更好的吞吐量,而不会彻底改变您的IPC方法。