我正在为战舰游戏编写代码而且我有点陷入困境。
这是我的代码的一部分
color_change()
ship_position()
Thread(target=ship_pos_Recv()).start()
ships_send = pickle.dumps(ships)
client.send(ships_send)
print('sent')
Lock(target=ship_pos_Recv()).acquire()
# main loop begins
color_change()
'颜色'网格上的单元格,ship_position()
允许用户放置他/她的船只。
问题是,Thread(target=ship_pos_Recv()).start()
之后代码不会继续;它不会执行pickle功能。
ship_pos_Recv()
看起来像这样:
def ship_pos_Recv():
global enemy_ships
incoming = client.recv(2048)
converted = pickle.loads(incoming)
enemy_ships = converted
为什么不超越'螺纹部分?我知道我的解释很差,请给我留言,我会尽力回答你的问题。
PLZ HAAALP
答案 0 :(得分:0)
正如您现在所做的那样,您正在调用函数ship_pos_Recv
,然后将其返回target
类中的Thread
参数。如果您查看Thread
类,可以看到它调用您传递给目标的函数(在run
方法中)。
代码应该是什么样的:
Thread(target=ship_pos_Recv).start()
这会将ship_pos_Recv
传递给Thread
类,然后作为线程运行。
就Lock
而言,它看起来并没有被正确使用。如果您正在尝试等待线程完成,那么您应该将线程设置为变量,然后join
。例如:
t = Thread(target=ship_pos_Recv)
t.start()
# do some code
t.join() # this waits for the thread to complete