2017-06-19 3 views
0

Ich schreibe einen Code für das Schlachtschiffspiel und bin irgendwie festgefahren.Mein Code geht nicht weiter nach Thread(). Start()

Hier ist ein Teil meines Codes

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() ‚Farben‘ die Zellen auf dem Gitter und ship_position() ermöglicht dem Benutzer seine/ihre Schiffe zu platzieren.

Problem ist, der Code geht nicht weiter nach Thread(target=ship_pos_Recv()).start(); Es wird die Beizfunktion nicht ausführen. ship_pos_Recv() sieht wie folgt aus:

def ship_pos_Recv(): 
    global enemy_ships 
    incoming = client.recv(2048) 
    converted = pickle.loads(incoming) 
    enemy_ships = converted 

Warum es nicht ‚über das hinausgehen‘ der Gewindeteil? Ich weiß, meine Erklärung ist schlecht hier, lassen Sie mich einen Kommentar und ich werde mein Bestes versuchen, um Ihre Anfragen zu beantworten.

PLZ HAAALP

+1

rufen Sie Ihre Funktion nicht auf, ändern Sie Ihren Code in 'Thread (target = ship_pos_Recv) .start()' – Stack

Antwort

0

Wie Sie es jetzt haben, rufen Sie die Funktion ship_pos_Recv und dann Rückkehr es vorbei an den target Parameter in der Thread Klasse. Wenn Sie in die Klasse Thread schauen, können Sie sehen, dass sie die Funktion aufruft, die Sie an das Ziel übergeben (in der Methode run).

Was sollte der Code aussehen wird:

Thread(target=ship_pos_Recv).start() 

Diese ship_pos_Recv zum Thread Klasse passieren würde dann als Thread ausgeführt.

Bis Lock sieht es nicht so aus, als ob es richtig verwendet wird. Wenn Sie versuchen, auf den Abschluss des Threads zu warten, sollten Sie den Thread auf eine Variable und dann auf join setzen. Beispiel:

t = Thread(target=ship_pos_Recv) 
t.start() 
# do some code 
t.join() # this waits for the thread to complete 
Verwandte Themen