gpt4 book ai didi

python - python 中的多线程客户端

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:50 24 4
gpt4 key购买 nike

当我连接到服务器时遇到问题,它连接正确并且线程中的代码运行完美,问题是我似乎没有收到任何消息,或者至少没有收到 self.data没有更新,我尝试使用 print("") 检查,似乎代码未到达启动线程后的 while 循环。这是我的代码:

class Client:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

def __init__(self, address):
self.sock.connect((address, 10000))
self.playerID = PID
self.data = [0, 0, 0, 0, 0]


iThread = threading.Thread(target=self.game(self.data))
iThread.daemon = True
iThread.start()

while True:
data = self.sock.recv(2048)
datas = pickle.loads(data)
for i in range(0, len(self.data)):
self.data[i]= datas[i]
if not data:
break

def game(self, data):
morecode...

最佳答案

这是一个实验,其中 Thread 被给予不带参数的目标,但目标已经关闭了它需要的参数:

from threading import Thread

import time

def func1(data):
time.sleep(2)
data.append(2)


def func(data):

def func2():
func1(data)

print(data)
t=Thread(target=func2)
t.start()
t.join()
print(data)
t=Thread(target=lambda: func1(data))
t.start()
t.join()
print(data)


func([0])

输出:

[0]
[0, 2]
[0, 2, 2]

这个答案在这里表明有一些方法可以为Thread提供一个目标,这是一种闭包形式。

关于python - python 中的多线程客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47831444/

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