线程python绑定多个端口
我想做一件简单的事情:只需绑定两个端口以等待传入的连接,并继续使用应用程序代码。这是代码线程python绑定多个端口,python,multithreading,Python,Multithreading,我想做一件简单的事情:只需绑定两个端口以等待传入的连接,并继续使用应用程序代码。这是代码 import socket import threading import Queue q = Queue.Queue() q2 = Queue.Queue() def escucha_9003(): s = socket.socket() s.bind(("localhost",9023)) s.listen(10) sc, address = s.accept()
import socket
import threading
import Queue
q = Queue.Queue()
q2 = Queue.Queue()
def escucha_9003():
s = socket.socket()
s.bind(("localhost",9023))
s.listen(10)
sc, address = s.accept()
q.put(sc)
def escucha_9004():
s2 = socket.socket()
s2.bind(("localhost",9024))
s2.listen(10)
sc2, address2 = s2.accept()
q.put(sc2)
hilo = threading.Thread(target=escucha_9003).start()
sc2=q.get()
hilo2 = threading.Thread(target=escucha_9004).start()
sc=q2.get()
print "i never arrive here"
我需要获取每个函数中返回的一些参数。我使用队列库来做这件事。
但问题是,我想继续使用代码,但我从来没有达到这一行:打印“我从来没有到过这里”。至少它从未被印刷过
我需要如何做才能在启动这两个线程并处理传入连接之后继续开发
非常感谢这两个.get()
调用都是阻塞调用。此外,线程中的.accept()
调用也被阻塞。从技术上讲,如果没有来自客户端的连接,您甚至不应该通过这两个.accept()
调用。因为主线程正在等待来自队列的get()
您需要做的是从线程内部而不是从主线程内部处理队列。否则,您将需要在事件循环中使用.get(timeout=somess)
,在该循环中,您将在一定时间内不断检查队列中的更多内容,然后继续执行更多的连续处理
您可能希望准确地解释您试图实现的目标,然后在阻塞主线程以接收数据之前,重新构造这些线程以处理更多的自己的工作