關卡初學者。我對python中的線程創建方法感到困惑。具體來說有以下兩種方法之間有什麼區別:關於python中的線程混淆
在第一種方法中,我使用
import thread
模塊,後來我通過這段代碼thread.start_new_thread(myfunction,())
作爲myfunction的創建線程()沒有任何ARGS。在第二種方法我使用
from threading import Thread
,後來我做這樣的事情創建線程:t = Thread(target=myfunction)
然後t.start()
爲什麼我問的原因是因爲我的程序工作正常,第二個方法,但當我使用第一種方法時,它不能按預期工作。我正在開發一個客戶端 - 服務器程序。由於
的代碼如下:
#!/usr/bin/env python
import socket
from threading import Thread
import thread
data = 'default'
tcpSocket = ''
def start_server():
global tcpSocket
tcpSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcpSocket.bind(('',1520))
tcpSocket.listen(3)
print "Server is up...."
def service():
global tcpSocket
(clientSocket,address) = tcpSocket.accept()
print "Client connected with: ", address
# data = 'default'
send_data(clientSocket,"Server: This is server\n")
global data
while len(data):
data = receive_data(clientSocket)
send_data(clientSocket,"Client: "+data)
print "Client exited....\nShutting the server"
clientSocket.close()
tcpSocket.close()
def send_data(socket,data):
socket.send(data)
def receive_data(socket):
global data
data = socket.recv(2048)
return data
start_server()
for i in range(2):
t = Thread(target=service)
t.start()
#thread.start_new_thread(service,())
爲什麼「它不按預期工作」? –
服務器沒有完全啓動。我的意思是socket.accept()之前的代碼工作,但之後程序退出沒有任何錯誤。我可以發佈代碼,但它會使這篇文章太長! –
你當然希望使用更高級別的'threading'模塊,所以如果可行的話,不要擔心更低級別的'thread'。 – shx2