Python 多插座监测

Python 多插座监测,python,sockets,select,ipc,multiprocessing,Python,Sockets,Select,Ipc,Multiprocessing,我正在设计一个python程序,它将通过套接字同时与另外两个进程通信。其中一个进程是一个C守护进程,因此这个套接字将一直处于活动状态—没有问题。另一个过程是一个PHP网页。所以这个套接字不是一直建立的。大多数情况下,套接字都在侦听端口 如果两个套接字始终处于活动状态,则可以使用一个简单的select()调用来监视来自这两个套接字的输入。但在我的情况下,这是不可能的。我怎样才能轻松做到这一点 谢谢,在这种情况下,您可以使用select(),即使在只有阻塞套接字的单线程单进程程序中也是如此。以下是使

我正在设计一个python程序,它将通过套接字同时与另外两个进程通信。其中一个进程是一个C守护进程,因此这个套接字将一直处于活动状态—没有问题。另一个过程是一个PHP网页。所以这个套接字不是一直建立的。大多数情况下,套接字都在侦听端口

如果两个套接字始终处于活动状态,则可以使用一个简单的select()调用来监视来自这两个套接字的输入。但在我的情况下,这是不可能的。我怎样才能轻松做到这一点

谢谢,

在这种情况下,您可以使用select(),即使在只有阻塞套接字的单线程单进程程序中也是如此。以下是使用select()接受传入连接的方式:


如果您循环调用select(rlist),当检测到套接字状态发生变化时,是什么阻止您调整rlist?@jd:python程序是一个进程。因此,如果它正在等待套接字客户端连接,它将阻塞。您可以在侦听套接字上选择。准备好后,调用mySocket.accept()。
daemonSocket = socket.socket()
...
phpListenSocket = socket.socket()
phpListenSocket.bind(...)
phpListenSocket.listen(...)
phpSocket = None

while True:
    rlist = ...
    rready, wready, eready = select(rlist, [], [])
    if phpListenSocket in rready:
        phpSocket, remoteAddr = phpListenSocket.accept()