Python-Multithread-Programmierung 2

高洛峰
Freigeben: 2016-10-18 11:42:20
Original
1427 Leute haben es durchsucht

Wie im vorherigen Abschnitt verfügt die Threading.Thread-Klasse von Python über eine Ausführungsmethode, mit der die Funktionsfunktionen des Threads definiert werden. Diese Methode kann in Ihrer eigenen Thread-Klasse überschrieben werden. Nachdem Sie Ihre eigene Thread-Instanz erstellt haben, können Sie den Thread über die Startmethode der Thread-Klasse starten und ihn zur Planung an die virtuelle Python-Maschine übergeben. Wenn der Thread ausgeführt werden kann, wird die Ausführungsmethode aufgerufen Faden. Beginnen wir mit dem ersten Beispiel:

# encoding: UTF-8
import threading
import time
  
class MyThread(threading.Thread):
    def run(self):
        for i in range(3):
            time.sleep(1)
            msg = "I'm "+self.name+' @ '+str(i)
            print msg
def test():
    for i in range(5):
        t = MyThread()
        t.start()
if __name__ == '__main__':
    test()
Nach dem Login kopieren

Ausführungsergebnis:


I'm Thread-1 @ 0

I ' m Thread-2 bei 0

Ich bin Thread-5 bei 0

Ich bin Thread-3 bei 0

Ich bin Thread-4 bei 0

Ich bin Thread-3 bei 1

Ich bin Thread-4 bei 1

Ich bin Thread-5 bei 1

Ich bin Thread -1 @ 1

Ich bin Thread-2 @ 1

Ich bin Thread-4 @ 2

Ich bin Thread-5 @ 2

Ich bin Thread-2 bei 2

Ich bin Thread-1 bei 2

Ich bin Thread-3 bei 2


Aus dem Code und den Ausführungsergebnissen können wir ersehen, dass die Ausführungsreihenfolge von Multithread-Programmen ungewiss ist. Wenn die Sleep-Anweisung ausgeführt wird, wird der Thread blockiert (Blockiert). Nach dem Ende des Ruhezustands wechselt der Thread in den Bereitschaftszustand (Runnable) und wartet auf die Planung. Bei der Thread-Planung wird ein Thread zur Ausführung ausgewählt. Der obige Code kann nur garantieren, dass jeder Thread die gesamte Ausführungsfunktion ausführt, die Startreihenfolge der Threads und die Ausführungsreihenfolge jeder Schleife in der Ausführungsfunktion können jedoch nicht bestimmt werden.

Darüber hinaus ist Folgendes zu beachten:

1 Jeder Thread muss einen Namen haben. Obwohl der Name des Thread-Objekts im obigen Beispiel nicht angegeben ist, weist Python automatisch einen zu Name des Threads.

2. Der Thread ist abgeschlossen, wenn seine run()-Methode endet.

3. Der Thread-Planer kann nicht gesteuert werden, aber die Thread-Planungsmethode kann auf andere Weise beeinflusst werden.

Das obige Beispiel zeigt lediglich das Erstellen eines Threads, das aktive Anhalten und Beenden des Threads. Im nächsten Abschnitt besprechen wir die Thread-Synchronisierung mithilfe von Mutex-Sperren.


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage