2017-08-29 4 views
-2

Ich mache einen Roboter, der mit Himbeere und Python ferngesteuert werden kann.Paralleler Prozess Python

Ich habe eine Flask Rest API auf einem Server ausgeführt, die Befehle an den Roboter sendet, wenn der Benutzer die Tasten drückt. Sagen wir, ich drücke die Taste, um vorwärts zu gehen, der Roboter kann sich nur bewegen, wenn alle Sensoren kein nahes Objekt erkennen. Der Roboter läuft weiter, bis die Stopp-Taste gedrückt wird oder ein Sensor ein Objekt erreicht.

Mein Zweifel ist: Wie kann ich den API-Code behalten jede Anfrage zu hören, und halten Sie die Sensoren die Abstände zur gleichen Zeit messen? Wenn der Roboter läuft, dachte ich, ich sollte ein "while True" machen, bis der Sensor ein Objekt erreicht, aber es wird das Programm sperren und wenn ich die Stopptaste drücke, wird es wegen der Endlosschleife nicht stoppen ...

Immer wenn sich der Roboter in eine beliebige Richtung bewegt, müssen die Sensoren aktiv sein und die API gleichzeitig zuhören.

Ich suchte nach Multiprocessing und Subprozess-Module, aber nicht genau, was ich tun muss.

Irgendwelche Vorschläge?

Dank

+0

Haben Sie das Threading-Modul von Python untersucht? –

+0

Sie können einen Thread in 'while run_flag starten: if detect_object: do_move()', und 'run_flag' kann von 'thread_global_var/pipe/cache/db' abgerufen werden, die von' request' gesetzt werden. – Cheney

Antwort

1

Mulitple Threading wahrscheinlich das, was Sie wollen.

Unten ist ein sehr einfaches Beispiel für Sie, Sie können sehen, Thread 2 '2' zuerst auf dem Bildschirm drucken.

import threading 
import time 

def loopfunc1(): 
    time.sleep(3) 
    print('1') 

def loopfunc2(): 
    print('2') 

# launch thread 1 
t = threading.Thread(target=loopfunc1) 
t.start() 

# not waiting thread 1 finish 
# launch thread 2 
# thread 2 print '2' on screen first 
t = threading.Thread(target=loopfunc2) 
t.start()