2016-06-15 2 views
0

Ich bin ein Anfänger in Python und Multiprocessing, also wenn die Frage naiv erscheint bitte verzeih mir. Ich habe zwei Funktionen, die ich gleichzeitig ausführen möchte. Eines ist eine openCV-Implementierung der Gesichtserkennung und das andere ist ein Standard-Python-Code.Parallelverarbeitung auf Python

def main(): 
    does(s) # a function call 

def face(): 
    recog.main() #another call 

Wie Sie erraten, beide Funktionen sind die endgültigen Endbenutzer-Funktionen, die eine um die Aufgabe zu implementieren zu nennen hat. Ich möchte, dass sie beide gleichzeitig laufen.

Vorherige Antworten zu diesem Thema beraten Threading-Modul, aber ich habe es ausprobiert und es funktioniert nicht. Die erste Funktion. gerufen werden, wird zuerst und dann der zweite ausgeführt. Ein Freund von mir empfahl Rospy-Modul. Ist es der einzige Weg? Danke im Voraus.

EDIT: In der Antwort auf diese Frage, Make 2 functions run at the same time, hat ein Benutzer geschrieben, dass tatsächlich Einfädeln nicht zwei Funktionen gleichzeitig ausführen machen

+1

* Vorherige Antworten zu diesem Thema beraten Threading-Modul, aber ich habe es versucht und es funktioniert nicht * Was haben Sie versucht, ein [MCVE]. Werfen Sie auch einen Blick auf [Dead einfaches Beispiel für die Verwendung von Multiprocessing Queue, Pool und Sperren] (http://stackoverflow.com/q/20887555) –

+0

thread.start_new_thread (main()) thread.start_new_thread (Gesicht()) Dies führt nicht beide gleichzeitig. Stattdessen beendet sie eins nach dem anderen. Ich habe versucht Threading-Modul http://www.tutorialspoint.com/python/python_multithreading.htm Aber das Ergebnis war das gleiche. – Spock

+0

Wenn Sie ROS trotzdem nicht verwenden, verwenden Sie rospy nicht, nur um Dinge parallel zu betreiben. Dies ist nicht, wofür es gedacht ist und es wird Ihnen eine unnötige Abhängigkeit von ROS geben. – luator

Antwort

1

Ich benutze die multiprocessing module für die Ausführung von zwei Funktionen parallel. Für was ich getan habe (geändert zu Ihrer Situation):

+0

Ein großes Dankeschön! Ich hatte versucht, das Multiprocessing-Modul mit dem Ziel-Keyword aus, aber es hatte nicht funktioniert. Eine Nachfolgefrage. Ist der Name ein notwendiges Argument? Danke – Spock

+0

Nein ist es nicht: Im [Beispiel in 16.6.1.1] (https://docs.python.org/2/library/multiprocessing.html) können Sie 'Process (target = f, args = (' Bob ',)). So können Sie den Namensteil entfernen! Ich werde meine Antwort aktualisieren :) –

+0

Für mich war dies auch das Beispiel, das ich suchte. Wie bei @Spock habe ich mir die vorgeschlagenen Duplikate angeschaut, war aber nicht in der Lage, es zu funktionieren, bis ich den obigen Code implementiert habe –