gpt4 book ai didi

python - 关于python中线程的困惑

转载 作者:太空宇宙 更新时间:2023-11-04 03:52:12 25 4
gpt4 key购买 nike

<分区>

初级水平。我对 python 中的线程创建方法感到困惑。具体有无以下两种方式的区别:

  1. 在第一种方法中,我使用 import thread 模块,稍后我通过此代码 thread.start_new_thread(myfunction,()) 创建一个线程作为 myfunction () 没有任何参数。

  2. 在第二种方法中,我使用了 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,())

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com