Heim Backend-Entwicklung Python-Tutorial Kann Python parallel rechnen?

Kann Python parallel rechnen?

Jun 19, 2019 am 11:06 AM
python 并行计算

Kann Python parallel rechnen?

Python kann parallele Berechnungen durchführen:

1. Übersicht

Parallel Python ist ein Python-Modul, das einen Mechanismus für die parallele Ausführung von Python-Code auf SMP (Systemen mit mehreren Prozessoren oder Multi-Cores) und Clustern (über ein Netzwerk verbundene Computer) bereitstellt ). Es ist leichtgewichtig, einfach zu installieren und in andere Python-Software zu integrieren. Parallel Python ist ein Open-Source- und plattformübergreifendes Modul, das in reinem Python geschrieben ist. 2. Funktionen

Python-Code parallel auf SMP und Clustern ausführen

Einfach zu verstehen und zu implementieren. Jobbasierte Parallelisierungstechnologie (einfach parallele Konvertierung serieller Anwendungen)

Optimale Konfiguration automatisch erkennen (Anzahl der Worker-Prozesse ist standardmäßig auf die effektive Anzahl von Prozessoren eingestellt)

Dynamische Prozessorzuteilung (Anzahl der Worker-Prozesse kann zur Laufzeit geändert werden)

Geringer Overhead für nachfolgende Jobs mit derselben Funktionalität (implementieren Sie transparentes Caching, um den Overhead zu reduzieren)

Dynamischer Lastausgleich (Jobs werden während der Ausführung auf die Prozessoren verteilt)

Fehlertoleranz (bei Knotenausfall). , Aufgaben werden auf anderen Knoten neu geplant)

Automatische Erkennung von Computerressourcen

Dynamische Zuweisung von Computerressourcen (das Ergebnis der automatischen Erkennung und Fehlertoleranz)

Netzwerkverbindung SHA- basierte Authentifizierung

Plattformübergreifende Portabilität und Interoperabilität (Windows, Linux, Unix, Mac OS X)

Architekturübergreifende Portabilität und Interoperabilität (x86, x86 -64 usw.)

Open Source

Verwandte Empfehlungen: „Python-Video-Tutorial

3. Motivation

Heutzutage wird Software geschrieben in Python wird in vielen Anwendungen verwendet, einschließlich Geschäftslogik, Datenanalyse und wissenschaftlichem Rechnen. Dies führt zusammen mit der breiten Verfügbarkeit von SMP-Computern (Multiprozessor oder Multicore) und Clustern (über ein Netzwerk verbundene Computer) auf dem Markt zu einem Bedarf an paralleler Ausführung von Python-Code.

Der einfachste und gebräuchlichste Weg, parallele Anwendungen für SMP-Computer zu schreiben, ist die Verwendung von Threads. Wenn die Anwendung jedoch rechnerisch mithilfe von Threads gebunden ist oder das Thread-Python-Modul die parallele Ausführung von Python-Bytecode nicht zulässt. Der Grund dafür ist, dass der Python-Interpreter die GIL (Global Interpreter Lock) für die interne Abrechnung verwendet. Diese Sperre ermöglicht die gleichzeitige Ausführung nur einer Python-Bytecode-Anweisung, selbst auf SMP-Maschinen.

Das PP-Modul überwindet diese Einschränkung und bietet eine einfache Möglichkeit, parallele Python-Anwendungen zu schreiben. Intern nutzt ppsmp Prozesse und IPC (Inter-Prozess-Kommunikation), um parallele Berechnungen zu organisieren. Alle Details und Komplexitäten des letzteren werden vollständig berücksichtigt, die Anwendung übermittelt lediglich den Auftrag und ruft seine Ergebnisse ab (die einfachste Möglichkeit, parallele Bewerbungen zu schreiben).

Um die Sache noch besser zu machen, funktioniert in PP geschriebene Software parallel, sogar auf vielen Computern, die über ein lokales Netzwerk oder das Internet verbunden sind. Plattformübergreifende Portabilität und dynamischer Lastausgleich ermöglichen PP eine effiziente Parallelisierung der Datenverarbeitung auch auf heterogenen und plattformübergreifenden Clustern.

4. Installation

Jede Plattform: Laden Sie das Modularchiv herunter und extrahieren Sie es in ein lokales Verzeichnis. Führen Sie das Installationsskript aus: python setup.py install

Windows: Laden Sie die Binärdatei des Windows-Installationsprogramms herunter und führen Sie sie aus.

5. Beispiel

import math, sys, time
import pp
def isprime(n):
    """Returns True if n is prime and False otherwise"""
    if not isinstance(n, int):
        raise TypeError("argument passed to is_prime is not of 'int' type")
    if n < 2:
        return False
    if n == 2:
        return True
    max = int(math.ceil(math.sqrt(n)))
    i = 2
    while i <= max:
        if n % i == 0:
            return False
        i += 1
    return True
def sum_primes(n):
    """Calculates sum of all primes below given integer n"""
    return sum([x for x in xrange(2,n) if isprime(x)])
print """Usage: python sum_primes.py [ncpus]
    [ncpus] - the number of workers to run in parallel, 
    if omitted it will be set to the number of processors in the system
"""
# tuple of all parallel python servers to connect with
ppservers = ()
#ppservers = ("10.0.0.1",)
if len(sys.argv) > 1:
    ncpus = int(sys.argv[1])
    # Creates jobserver with ncpus workers
    job_server = pp.Server(ncpus, ppservers=ppservers)
else:
    # Creates jobserver with automatically detected number of workers
    job_server = pp.Server(ppservers=ppservers)
print "Starting pp with", job_server.get_ncpus(), "workers"
# Submit a job of calulating sum_primes(100) for execution. 
# sum_primes - the function
# (100,) - tuple with arguments for sum_primes
# (isprime,) - tuple with functions on which function sum_primes depends
# ("math",) - tuple with module names which must be imported before sum_primes execution
# Execution starts as soon as one of the workers will become available
job1 = job_server.submit(sum_primes, (100,), (isprime,), ("math",))
# Retrieves the result calculated by job1
# The value of job1() is the same as sum_primes(100)
# If the job has not been finished yet, execution will wait here until result is available
result = job1()
print "Sum of primes below 100 is", result
start_time = time.time()
# The following submits 8 jobs and then retrieves the results
inputs = (100000, 100100, 100200, 100300, 100400, 100500, 100600, 100700)
jobs = [(input, job_server.submit(sum_primes,(input,), (isprime,), ("math",))) for input in inputs]
for input, job in jobs:
    print "Sum of primes below", input, "is", job()
print "Time elapsed: ", time.time() - start_time, "s"
job_server.print_stats()
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonKann Python parallel rechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie MySQL nach der Installation So verwenden Sie MySQL nach der Installation Apr 08, 2025 am 11:48 AM

Der Artikel führt den Betrieb der MySQL -Datenbank vor. Zunächst müssen Sie einen MySQL -Client wie MySQLworkBench oder Befehlszeilen -Client installieren. 1. Verwenden Sie den Befehl mySQL-uroot-P, um eine Verbindung zum Server herzustellen und sich mit dem Stammkonto-Passwort anzumelden. 2. Verwenden Sie die Erstellung von Createdatabase, um eine Datenbank zu erstellen, und verwenden Sie eine Datenbank aus. 3.. Verwenden Sie CreateTable, um eine Tabelle zu erstellen, Felder und Datentypen zu definieren. 4. Verwenden Sie InsertInto, um Daten einzulegen, Daten abzufragen, Daten nach Aktualisierung zu aktualisieren und Daten nach Löschen zu löschen. Nur indem Sie diese Schritte beherrschen, lernen, mit gemeinsamen Problemen umzugehen und die Datenbankleistung zu optimieren, können Sie MySQL effizient verwenden.

Wie kontrolliert PS -Federn die Weichheit des Übergangs? Wie kontrolliert PS -Federn die Weichheit des Übergangs? Apr 06, 2025 pm 07:33 PM

Der Schlüssel zur Federkontrolle liegt darin, seine allmähliche Natur zu verstehen. PS selbst bietet nicht die Möglichkeit, die Gradientenkurve direkt zu steuern, aber Sie können den Radius und die Gradientenweichheit flexius durch mehrere Federn, Matching -Masken und feine Selektionen anpassen, um einen natürlichen Übergangseffekt zu erzielen.

Muss MySQL bezahlen? Muss MySQL bezahlen? Apr 08, 2025 pm 05:36 PM

MySQL hat eine kostenlose Community -Version und eine kostenpflichtige Enterprise -Version. Die Community -Version kann kostenlos verwendet und geändert werden, die Unterstützung ist jedoch begrenzt und für Anwendungen mit geringen Stabilitätsanforderungen und starken technischen Funktionen geeignet. Die Enterprise Edition bietet umfassende kommerzielle Unterstützung für Anwendungen, die eine stabile, zuverlässige Hochleistungsdatenbank erfordern und bereit sind, Unterstützung zu bezahlen. Zu den Faktoren, die bei der Auswahl einer Version berücksichtigt werden, gehören Kritikalität, Budgetierung und technische Fähigkeiten von Anwendungen. Es gibt keine perfekte Option, nur die am besten geeignete Option, und Sie müssen die spezifische Situation sorgfältig auswählen.

Wie richte ich PS -Federn ein? Wie richte ich PS -Federn ein? Apr 06, 2025 pm 07:36 PM

PS Federn ist ein Bildkantenschwärcheneffekt, der durch den gewichteten Durchschnitt der Pixel im Randbereich erreicht wird. Das Einstellen des Federradius kann den Grad der Unschärfe steuern und je größer der Wert ist, desto unscharfer ist er. Eine flexible Einstellung des Radius kann den Effekt entsprechend den Bildern und Bedürfnissen optimieren. Verwenden Sie beispielsweise einen kleineren Radius, um Details bei der Verarbeitung von Charakterfotos zu erhalten und einen größeren Radius zu verwenden, um ein dunstiges Gefühl bei der Verarbeitung von Kunst zu erzeugen. Es ist jedoch zu beachten, dass zu groß der Radius leicht an Kantendetails verlieren kann, und zu klein ist der Effekt nicht offensichtlich. Der Federneffekt wird von der Bildauflösung beeinflusst und muss anhand des Bildverständnisses und des Griffs von Effekten angepasst werden.

So optimieren Sie die Datenbankleistung nach der MySQL -Installation So optimieren Sie die Datenbankleistung nach der MySQL -Installation Apr 08, 2025 am 11:36 AM

Die MySQL -Leistungsoptimierung muss von drei Aspekten beginnen: Installationskonfiguration, Indexierung und Abfrageoptimierung, Überwachung und Abstimmung. 1. Nach der Installation müssen Sie die my.cnf -Datei entsprechend der Serverkonfiguration anpassen, z. 2. Erstellen Sie einen geeigneten Index, um übermäßige Indizes zu vermeiden und Abfrageanweisungen zu optimieren, z. B. den Befehl Erklärung zur Analyse des Ausführungsplans; 3. Verwenden Sie das eigene Überwachungstool von MySQL (ShowProcessList, Showstatus), um die Datenbankgesundheit zu überwachen und die Datenbank regelmäßig zu sichern und zu organisieren. Nur durch kontinuierliche Optimierung dieser Schritte kann die Leistung der MySQL -Datenbank verbessert werden.

Welchen Einfluss hat PS -Federn auf die Bildqualität? Welchen Einfluss hat PS -Federn auf die Bildqualität? Apr 06, 2025 pm 07:21 PM

PS -Federn kann zu einem Verlust von Bilddetails, einer verringerten Farbsättigung und einem erhöhten Rauschen führen. Um den Aufprall zu verringern, wird empfohlen, einen kleineren Federradius zu verwenden, die Ebene und dann die Feder zu kopieren und die Bildqualität vor und nach der Federung vorsichtig zu vergleichen. Darüber hinaus ist die Federn für alle Fälle nicht geeignet, und manchmal sind Werkzeuge wie Masken besser zum Umgang mit Bildkanten geeignet.

Wie optimieren Sie die MySQL-Leistung für Hochlastanwendungen? Wie optimieren Sie die MySQL-Leistung für Hochlastanwendungen? Apr 08, 2025 pm 06:03 PM

Die MySQL-Datenbankleistung Optimierungshandbuch In ressourcenintensiven Anwendungen spielt die MySQL-Datenbank eine entscheidende Rolle und ist für die Verwaltung massiver Transaktionen verantwortlich. Mit der Erweiterung der Anwendung werden jedoch die Datenbankleistung Engpässe häufig zu einer Einschränkung. In diesem Artikel werden eine Reihe effektiver Strategien zur Leistungsoptimierung von MySQL -Leistung untersucht, um sicherzustellen, dass Ihre Anwendung unter hohen Lasten effizient und reaktionsschnell bleibt. Wir werden tatsächliche Fälle kombinieren, um eingehende Schlüsseltechnologien wie Indexierung, Abfrageoptimierung, Datenbankdesign und Caching zu erklären. 1. Das Design der Datenbankarchitektur und die optimierte Datenbankarchitektur sind der Eckpfeiler der MySQL -Leistungsoptimierung. Hier sind einige Kernprinzipien: Die Auswahl des richtigen Datentyps und die Auswahl des kleinsten Datentyps, der den Anforderungen entspricht, kann nicht nur Speicherplatz speichern, sondern auch die Datenverarbeitungsgeschwindigkeit verbessern.

SO VERVORTIERUNG DER BOOTRAP -Seite SO VERVORTIERUNG DER BOOTRAP -Seite Apr 07, 2025 am 10:06 AM

Die Vorschau -Methoden von Bootstrap -Seiten sind: Öffnen Sie die HTML -Datei direkt im Browser; Aktualisieren Sie den Browser automatisch mit dem Live-Server-Plug-In. und erstellen Sie einen lokalen Server, um eine Online -Umgebung zu simulieren.

See all articles