Python grundlegende lernbegleitende Programmierung

1. Hintergrundwissen

Wie der Name schon sagt, wird ein Prozess ausgeführt. Ein Prozess ist eine Abstraktion eines laufenden Programms.

Das Konzept des Prozesses stammt aus dem Betriebssystem, ist das Kernkonzept des Betriebssystems und eines der ältesten und wichtigsten abstrakten Konzepte des Betriebssystems. Alles andere im Betriebssystem dreht sich um das Konzept eines Prozesses. Wenn Sie den Prozess wirklich verstehen möchten, müssen Sie das Betriebssystem im Voraus verstehen

Entwicklungsverlauf des Betriebssystems: Weitere Informationen finden Sie im Blog: https://www.cnblogs.com/Dominic-Ji/articles/10929381.html

Die notwendige theoretische Grundlage:

 

# 1 Die Rolle des Betriebssystems: 
    1 : Verstecken Sie die hässliche und komplexe Hardwareschnittstelle, stellen Sie eine gute abstrakte Schnittstelle bereit.
     2 : Verwalten und planen Sie Prozesse und machen Sie die Konkurrenz mehrerer Prozesse um die Hardware ordentlich. 

# 二 多 道 技术: 
    1. Generieren Hintergrund: Für einen einzelnen Kern, um gleichzeitige 
    ps zu erreichen : Der 
    aktuelle Host ist im Allgemeinen mehrkernig. Dann verwendet jeder Kern eine Mehrkanaltechnologie 
    mit 4 CPUs. Ein Programm, das auf CPU1 ausgeführt wird, stößt auf io-Blockierung und wartet, bis io endet, bevor es neu geplant wird Wird für 
    eine der vier CPUs geplant, die speziell vom Betriebssystem-Planungsalgorithmus bestimmt werden. 
    
    2. Räumliches Multiplexen: Wenn sich mehrere Programme gleichzeitig im Speicher befinden.
     3. Zeitmultiplexen: Beim Multiplexen der Zeitscheibe einer CPU wird Folgendes 
       hervorgehoben: Wenn Sie auf einen Schnitt stoßen, dauert es zu lange, bis die CPU-Zeit belegt ist. Der Kern befindet sich vor dem Schnitt Speichern Sie den Status des Prozesses, 
            um sicherzustellen, dass Sie beim nächsten Zurückschalten basierend auf der Position des letzten Schnitts weiterlaufen können

Zweitens Mehrkanaltechnologie

1. Single-Core-Implementierung von gleichzeitigen Effekten

  • Parallelität

    Es sieht so aus, als würde es zur gleichen Zeit ausgeführt und kann als gleichzeitig bezeichnet werden

  • Parallel

    Gleichzeitige Ausführung im wahrsten Sinne des Wortes

Zusammenfassung:

  • Parallel muss gleichzeitig sein

  • Single-Core-Computer können keine Parallelität erreichen, aber sie können Parallelität erreichen

Ergänzung: Wir gehen direkt davon aus, dass ein einzelner Kern ein Kern ist und nur eine Person arbeitet. Berücksichtigen Sie nicht die Anzahl der Kerne in der CPU

2. Technische Mehrkanalillustration

3. Mehrkanal-Technologiefokus

  • Räumliches Multiplexen
    • Mehrere Programme teilen sich eine Reihe von Computerhardware
  • Zeitmultiplexen
    • Nur die lange machen müssen, kann die Schaltzeit sparen

    • Wechseln Sie zwischen Speicherstatus, Benutzermodus und Kernelmodus. Wechseln Sie + Speicherstatus

 

Das Umschalten (CPU) ist in zwei Fälle unterteilt: 1. Wenn ein Programm auf eine E / A-Operation stößt, entzieht das Betriebssystem dem Programm die Rolle der CPU-Ausführungsberechtigung: Verbessern Sie die CPU-Auslastung und beeinträchtigen Sie nicht die Ausführungseffizienz des Programms Wenn io verzögert wird, hat das Programm keinen Platz zum Ausführen des Bechers, so dass der Entzug den Betrieb des Programms nicht beeinträchtigt. 2. Wenn ein Programm die CPU für eine lange Zeit belegt, beraubt die Betriebsattraktion das Programm auch der CPU-Ausführungsberechtigung. Ausführungseffizienz (ursprüngliche Zeit + Schaltzeit)

3. Prozesstheorie

1. Erforderliche Kenntnisse

'' ' 
Der Unterschied zwischen einem Programm und einem Prozess Ein 

Programm ist eine Menge Code, der auf der Festplatte liegt. Ein 
Prozess , der' tot 'ist, ist ein Prozess, der ausgeführt wird. Es ist ein' live 
'' '

 

2. Prozessplanung

  • Wer zuerst kommt, mahlt zuerst
    • Es ist gut für Operationen mit langer Ausführungszeit, aber nicht für kurze Operationen.
    • Da ein langer Job zuerst eintrifft, muss der nächste kurze Job warten, bis der lange Job abgeschlossen ist, bevor der Becherraum für den kurzen Job geleert wird
  • Short Job Priority Algorithmus
    • Priorisieren Sie kurze Jobs
    • Wenn ein langer Job ausgeführt wird und ein kurzer Job kommt, wird der lange Job zuerst angehalten, und dann wird der kurze Job an den langen Job zurückgegeben, um die Ausführung fortzusetzen
  • Zeitscheiben-Rotationsmethode + mehrstufige Feedback-Warteschlange
    • Unabhängig davon, ob lange oder kurze Jobs zuerst in eine Warteschlange gestellt werden, führen Sie eine bestimmte Zeiteinheit einheitlich aus
    • Wenn es nicht innerhalb der angegebenen Zeit abgeschlossen ist, fällt es in die Warteschlange mit der zweiten Priorität und führt eine längere Zeiteinheit aus
    • Zu diesem Zeitpunkt setzt ein Job die zweite Ebene direkt aus, um die Arbeit der ersten Ebene auszuführen
    • Zusammenfassung: Nutzen Sie den Schalt- und Speicherstatus und optimieren Sie die Ausführungseffizienz von Jobs unterschiedlicher Größe

3. Drei Zustände des Prozesses

Bevor wir andere Konzepte verstehen, müssen wir zunächst einige Zustände des Prozesses verstehen. Während des Ausführens des Programms wird das Programm aufgrund des Planungsalgorithmus des Betriebssystems in mehrere Zustände versetzt: Bereit, Ausführen und Blockieren.

  (1) Bereitschaftsstatus

   Wenn der Prozess allen erforderlichen Ressourcen außer der CPU zugewiesen wurde, kann er sofort ausgeführt werden, solange der Prozessor erhalten wird. Der Prozessstatus wird zu diesem Zeitpunkt als Bereitschaftsstatus bezeichnet.

  (2) Ausführen / Ausführen

StatusWenn der Prozess den Prozessor erfasst hat, wird sein Programm auf dem Prozessor ausgeführt, und der Status des Prozesses zu diesem Zeitpunkt wird als Ausführungsstatus bezeichnet.

  (3) Blockierter (blockierter) Zustand

Der ausgeführte Prozess kann nicht ausgeführt werden, da auf das Eintreten eines Ereignisses gewartet wird. Er gibt den Prozessor auf und befindet sich in einem blockierten Zustand. Es kann mehrere Ereignisse geben, die eine Prozessblockierung verursachen, z. B. das Warten auf den Abschluss der E / A, der Anwendungspuffer kann nicht erfüllt werden, das Warten auf Buchstaben (Signale) usw.

4. Zwei Paare wichtiger Konzepte

Beschreibt, wie Aufgaben gesendet werden

  • Synchronisieren
    • Erläuterung: Nachdem die Aufgabe gesendet wurde, wartet sie auf das Rückgabeergebnis der Aufgabe und unternimmt während des Wartevorgangs nichts. Es sieht so aus, als ob das Programm stecken bleibt.
  • Asynchron
    • Erläuterung: Warten Sie nach dem Senden der Aufgabe nicht auf das Rückgabeergebnis der Aufgabe und führen Sie andere Aktionen direkt aus
    • Das Rückgabeergebnis der Aufgabe wird automatisch von einem asynchronen Rückrufmechanismus verarbeitet

Es ist, als würde man dem Lehrer einen Auftrag zur Korrektur übergeben. Xiaohong übergibt ihn dem Lehrer und steht an derselben Stelle, bis der Lehrer die Korrektur abgeschlossen hat. Xiaohongs Verhalten wird als Synchronisation bezeichnet. Und Xiao Li lief weg, nachdem er es dem Lehrer gegeben hatte. Dieses Verhalten wird als asynchron bezeichnet.

Beschreibt den laufenden Status des Programms

  • Blockieren (Sperrzustand)
    • Es ist der Zustand, dem unser Programm im Grunde beim Ausführen begegnet und auf den io-Betrieb wartet
  • Nicht blockierend (Bereitschaftszustand, Betriebszustand)
    • Es ist der ideale Zustand für die Ausführung unseres Programms, bei dem nur zwischen dem Bereitschaftszustand und dem Betriebszustand umgeschaltet wird, wodurch die Verzögerung verringert wird

Vier, zwei Möglichkeiten, um den Prozess zu starten

# 方式一
von Multiprozessor - Import Prozessimport
 Zeit def Aufgabe (Name):
     Drucken (f ' {Name} läuft ' ) 
    time.sleep ( 3 )
     drucken (f ' {name} ist vorbei ' ) , wenn __name__ == ' __main__ ' : 
    p = Prozess (Ziel = Aufgabe, Argumente = ( ' hz ' ,)) 
    p.start () print ( ' ^ (*  ̄ (oo)  ̄) ^ ' ) #





 
    
    
方式二类的继承

von Multiprozessor - Importprozess
 import Zeitklasse MyProcess (Prozess):
     def run (self):
         Druck ( ' hell 1 ' ) 
        time.sleep ( 3 )
         Druck ( ' hallo 2 ' ) , wenn __name__ == ' __main__ ' : 
    p = MyProcess () 
    p.start () print ( ' ^ (*  ̄ (oo)  ̄) ^ ' )



 
    

Zusammenfassung

"" "Beim 
Erstellen eines Prozesses wird ein Speicherplatz im Speicher beantragt und der Code ausgegeben, in den ausgeführt werden muss. 
Ein Prozess entspricht einem separaten Speicherplatz 
im Speicher. Mehrere Prozesse entsprechen einem separaten Speicherblock im 
Prozess. Prozess und Prozess Standardmäßig können Interdaten nicht direkt mit ihnen interagiert werden. Wenn Sie interagieren möchten, können Sie Tools und Module von Drittanbietern verwenden. 
"" "

Join-Methode

Join besteht darin, den Hauptprozess warten zu lassen, bis der Unterprozesscode beendet ist, bevor er fortfährt. Beeinflusst nicht die Ausführung anderer untergeordneter Prozesse

Spezifische Verwendung: Nach dem Start des Prozesses wird das Prozessobjekt .join ()

Datenisolation zwischen Prozessen

vom Multiprocessing import Prozess
 import Zeit 

a = 100
 def Aufgabe (Name):
     Drucken (f ' {Name} läuft ' ) 
    time.sleep ( 3 )
     global a 
    a = 101
     Druck (a)
     Drucken (f ' {name} ist über ' ) 


if  __name__ == ' __main__ ' : 
    p = Prozess (Ziel = Aufgabe, Argumente = ( ' hz ' ,)) 
    p.start ()
    print (a) 
    p.join () 
    print ( ' ^ (*  ̄ (oo)  ̄) ^ ' )

Ich denke du magst

Origin www.cnblogs.com/dingbei/p/12755339.html
Empfohlen
Rangfolge