线程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)
,在该循环中,您将在一定时间内不断检查队列中的更多内容,然后继续执行更多的连续处理

您可能希望准确地解释您试图实现的目标,然后在阻塞主线程以接收数据之前,重新构造这些线程以处理更多的自己的工作