Inhaltsverzeichnis
Richtige Antwort
Heim Backend-Entwicklung Python-Tutorial Instanzvariablen werden in Python nicht von Prozessen gemeinsam genutzt

Instanzvariablen werden in Python nicht von Prozessen gemeinsam genutzt

Feb 09, 2024 am 09:09 AM

Python 中进程之间不共享实例变量

Frageninhalt

Ich habe ein großes Problem mit Multiprocessing. In diesem Fall habe ich ein

1. Hauptklasse im Hauptprozess

2. Klasse foo in einem anderen Prozess

Ich muss mithilfe des Hauptprozesses einige Variablen in Prozess2 ändern. Wie kann ich das machen/? ? ?

class Main:
     def __init__(self):
          self.Foo_Instance = Foo()
          multiprocessing.Process(target=self.Foo_Instance.do_something).start()

     def Change_Foo(self):
          Foo_Instance.ImportantVar = True
    
class Foo:
     def __init__(self):
          self.ImportantVar = False

     def do_something(self):
          pass

Main_Instance = Main()
Main_Instance.Change_Foo()


Richtige Antwort


Jeder Prozess hat normalerweise seinen eigenen Speicher, auf den kein anderer Prozess zugreifen kann. Wenn Sie möchten, dass ein Prozess eine Variable ändern kann, die von einem anderen Prozess verwendet wird, besteht die einfachste Lösung darin, die Variable im gemeinsamen Speicher zu erstellen. In der Demo unten verwenden wir multiprocessing.value实例。为了证明 main.change_foo 可以修改 fooimportantvar 属性,我们必须在 main.change_foo 修改它之前给 foo.do_something 一个打印出其初始值的机会。同样, foo.do_something 需要等待 main.change_foo, um den Wert zu ändern und den aktualisierten Wert auszudrucken. Um dies zu erreichen, verwenden wir zwei 'multiprocessing.event' Instanzen:

import multiprocessing
import ctypes
import time

class main:
    def __init__(self):
        self.foo_instance = foo()
        multiprocessing.process(target=self.foo_instance.do_something).start()

    def change_foo(self):
        # wait for foo.do_something to have printed out its initial value:
        self.foo_instance.initial_print_event.wait()

        # modify the attribute (add missing self):
        self.foo_instance.importantvar.value = true

        # show that we have modified the attribute:
        self.foo_instance.changed_event.set()


class foo:
    def __init__(self):
        self.importantvar = multiprocessing.value(ctypes.c_bool, false, lock=false)
        self.initial_print_event = multiprocessing.event()
        self.changed_event = multiprocessing.event()

    def do_something(self):
        print('do_something before:', self.importantvar.value)
        # show that we have completed printing our initial value:
        self.initial_print_event.set()

        # now wait for main.change_foo to have changed our variable:
        self.changed_event.wait()

        print('do_something after:', self.importantvar.value)


# required for windows:
if __name__ == '__main__':
    main_instance = main()
    main_instance.change_foo()

Drucken:

do_something before: False
do_something after: True

Das obige ist der detaillierte Inhalt vonInstanzvariablen werden in Python nicht von Prozessen gemeinsam genutzt. 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

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

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.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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)

Heiße Themen

PHP-Tutorial
1505
276
Wie man mit der API -Authentifizierung in Python umgeht Wie man mit der API -Authentifizierung in Python umgeht Jul 13, 2025 am 02:22 AM

Der Schlüssel zum Umgang mit der API -Authentifizierung besteht darin, die Authentifizierungsmethode korrekt zu verstehen und zu verwenden. 1. Apikey ist die einfachste Authentifizierungsmethode, die normalerweise in den Anforderungsheader- oder URL -Parametern platziert ist. 2. BasicAuth verwendet Benutzername und Kennwort für die Basis64 -Codierungsübertragung, die für interne Systeme geeignet ist. 3.. OAuth2 muss das Token zuerst über Client_id und Client_secret erhalten und dann das BearerToken in den Anforderungsheader bringen. V. Kurz gesagt, die Auswahl der entsprechenden Methode gemäß dem Dokument und das sichere Speichern der Schlüsselinformationen ist der Schlüssel.

Python Fastapi Tutorial Python Fastapi Tutorial Jul 12, 2025 am 02:42 AM

Um moderne und effiziente APIs mit Python zu schaffen, wird Fastapi empfohlen. Es basiert auf Eingabeaufforderungen an Standardpython -Typ und kann automatisch Dokumente mit ausgezeichneter Leistung generieren. Nach der Installation von Fastapi und ASGI Server Uvicorn können Sie Schnittstellencode schreiben. Durch das Definieren von Routen, das Schreiben von Verarbeitungsfunktionen und die Rückgabe von Daten kann schnell APIs erstellt werden. Fastapi unterstützt eine Vielzahl von HTTP -Methoden und bietet automatisch generierte Swaggerui- und Redoc -Dokumentationssysteme. URL -Parameter können durch Pfaddefinition erfasst werden, während Abfrageparameter durch Einstellen von Standardwerten für Funktionsparameter implementiert werden können. Der rationale Einsatz pydantischer Modelle kann dazu beitragen, die Entwicklungseffizienz und Genauigkeit zu verbessern.

Python variabler Umfang in Funktionen Python variabler Umfang in Funktionen Jul 12, 2025 am 02:49 AM

In Python sind Variablen, die in einer Funktion definiert sind, lokale Variablen und sind nur innerhalb der Funktion gültig. Extern definiert sind globale Variablen, die überall gelesen werden können. 1. lokale Variablen werden zerstört, wenn die Funktion ausgeführt wird. 2. Die Funktion kann auf globale Variablen zugreifen, kann jedoch nicht direkt geändert werden, sodass das globale Schlüsselwort erforderlich ist. 3. Wenn Sie die äußeren Funktionsvariablen in verschachtelten Funktionen ändern möchten, müssen Sie das nichtlokale Schlüsselwort verwenden. 4.. Variablen mit demselben Namen beeinflussen sich in verschiedenen Bereichen nicht gegenseitig; 5. Global muss bei der Modifizierung globaler Variablen deklariert werden, ansonsten werden ungebundener Fehler aufgeworfen. Das Verständnis dieser Regeln hilft bei der Vermeidung von Fehler und zum Schreiben zuverlässigerer Funktionen.

Wie man eine API mit Python testet Wie man eine API mit Python testet Jul 12, 2025 am 02:47 AM

Um die API zu testen, müssen Sie Pythons Anfragebibliothek verwenden. In den Schritten werden die Bibliothek installiert, Anfragen gesendet, Antworten überprüfen, Zeitüberschreitungen festlegen und erneut werden. Installieren Sie zunächst die Bibliothek über PipinstallRequests. Verwenden Sie dann Requests.get () oder Requests.Post () und andere Methoden zum Senden von GET- oder Post -Anfragen. Überprüfen Sie dann die Antwort. Fügen Sie schließlich Zeitüberschreitungsparameter hinzu, um die Zeitüberschreitungszeit festzulegen, und kombinieren Sie die Wiederholungsbibliothek, um eine automatische Wiederholung zu erreichen, um die Stabilität zu verbessern.

Wie kann man große JSON -Dateien in Python analysieren? Wie kann man große JSON -Dateien in Python analysieren? Jul 13, 2025 am 01:46 AM

Wie kann ich große JSON -Dateien in Python effizient behandeln? 1. Verwenden Sie die IJSON-Bibliothek, um den Speicherüberlauf durch die Parsen von Elementen zu streamen und zu vermeiden. 2. Wenn es sich im Format von JSONLINES befindet, können Sie sie Zeile nach Zeile lesen und mit JSON.Loads () verarbeiten. 3. oder die große Datei in kleine Stücke teilen und dann separat verarbeiten. Diese Methoden lösen das Problem der Gedächtnisbeschränkung effektiv und sind für verschiedene Szenarien geeignet.

Kann eine Python -Klasse mehrere Konstruktoren haben? Kann eine Python -Klasse mehrere Konstruktoren haben? Jul 15, 2025 am 02:54 AM

Ja, ApythonCanhavemultipleConstructorToHalternativetechnik.1.UTEFAULTARGUMENTETHED__INIT__METHODTOALLIBLEINIGIALISIALISIONISCHE Withvaryingnumbersofparameter

Python zur Schleife über einem Tupel Python zur Schleife über einem Tupel Jul 13, 2025 am 02:55 AM

In Python umfasst die Methode, Tupel mit für Schleifen zu durchqueren, direkt iteriert über Elemente, das Erhalten von Indizes und Elementen gleichzeitig und die Verarbeitung verschachtelter Tupel. 1. Verwenden Sie die für die Schleife direkt, um auf jedes Element in Sequenz zuzugreifen, ohne den Index zu verwalten. 2. Verwenden Sie Enumerate (), um den Index und den Wert gleichzeitig zu erhalten. Der Standardindex ist 0 und der Startparameter kann ebenfalls angegeben werden. 3.. Verschachtelte Tupel können in der Schleife ausgepackt werden, es ist jedoch erforderlich, um sicherzustellen, dass die Untertuple -Struktur konsistent ist, sonst wird ein Auspackfehler angehoben. Darüber hinaus ist das Tupel unveränderlich und der Inhalt kann in der Schleife nicht geändert werden. Unerwünschte Werte können durch \ _ ignoriert werden. Es wird empfohlen zu überprüfen, ob das Tupel vor dem Durchqueren leer ist, um Fehler zu vermeiden.

Zugriff auf Daten von einer Web -API in Python zu Daten Zugriff auf Daten von einer Web -API in Python zu Daten Jul 16, 2025 am 04:52 AM

Der Schlüssel zur Verwendung von Python zum Aufrufen von Webapi, um Daten zu erhalten, liegt darin, die grundlegenden Prozesse und gemeinsamen Tools zu beherrschen. 1. Die Verwendung von Anfragen zum Einlösen von HTTP -Anforderungen ist der direkteste Weg. Verwenden Sie die GET -Methode, um die Antwort zu erhalten und JSON () zu verwenden, um die Daten zu analysieren. 2. Für APIs, die Authentifizierung benötigen, können Sie Token oder Schlüssel über Header hinzufügen. 3.. Sie müssen den Antwortstatuscode überprüfen. Es wird empfohlen, die Antwort zu verwenden. 4. Mit Blick auf die Paging -Schnittstelle können Sie nacheinander verschiedene Seiten anfordern und Verzögerungen hinzufügen, um Frequenzbeschränkungen zu vermeiden. 5. Bei der Verarbeitung der zurückgegebenen JSON -Daten müssen Sie Informationen gemäß der Struktur extrahieren, und komplexe Daten können in Daten konvertiert werden

See all articles