在Thread()。start()

时间:2017-06-19 14:41:38

标签: python multithreading debugging pygame

我正在为战舰游戏编写代码而且我有点陷入困境。

这是我的代码的一部分

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

1 个答案:

答案 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