关卡初学者。我对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