我最近一直在研究一個程序(正如你可能能夠從我之前提出的問題中看到的那樣),而且我在理解和實現多線程方面遇到了麻煩。Python中的多線程 - 阻止在後臺運行
我按照教程(binary tides)設置了一個很好的UDP服務器。然而,我遇到的問題是,當我在一個新的線程上創建一個阻塞的UDP套接字時,我在我最初創建線程的主程序中的代碼不起作用。下面是我的一些代碼:
main.py:
from thread import*
import connections
start_new_thread(networkStart.startConnecton())
print 'This should print!'
networkStart.py:
def startConnecton():
userData.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created'
try:
userData.s.bind((HOST, PORT))
except socket.error, msg:
print 'Bind failed. Error code: ' +str(msg[0]) + 'Message' +msg[1]
sys.exit()
print 'Socket bind complete'
userData.s.listen(10)
# Set the socket to listening mode, if there are more than 10 connections waiting reject the rest
print 'Socket now listening'
#Function for handling connections. Each new connection is handled on a separate thread
start_new_thread(connections.connectionListen())
connections.py:
def connectionListen():
while 1:
print 'waiting for connection'
#wait to accept a connection - blocking call
conn, addr = userData.s.accept()
userData.clients += 1
print 'Connected with ' + addr[0] + ':' + str(addr[1])
#start new thread takes 1st argument as a function name to be run, second is the tuple of arguments
start_new_thread(users.clientthread ,(conn, userData.clients))
我基本上只是想成爲能夠在新線程上調用startConnection函數後執行main.py中的任何代碼(即在此實例中輸出字符串) 。
我一直在爲這個程序苦苦掙扎了一段時間,Python對我來說是新的,我發現它非常具有挑戰性。我假設我必須在執行多線程的過程中發生一些錯誤,任何幫助都將不勝感激!
這是一個完整的代碼?你會得到什麼錯誤?對'start_new_thread'的調用看起來無效。 – 2013-03-14 16:22:32