


Detaillierte Erläuterung der Verwendung von Tornado-Coroutinen in Python (mit Beispielen)
Durch die Verwendung von Tornado-Coroutinen kann ein asynchrones Verhalten entwickelt werden, das dem synchronen Code ähnelt. Da die Coroutine selbst keine Threads verwendet, verringert sie gleichzeitig den Aufwand für den Thread-Kontextwechsel und ist ein effizientes Entwicklungsmodell.
1. Coroutine-Funktion schreiben
Beispiel: Verwendung der Coroutine-Technologie zur Entwicklung einer Webseitenzugriffsfunktion
#用协程技术开发网页访问功能 from tornado import gen #引入协程库gen from tornado.httpclient import AsyncHTTPClient import time #使用gen.coroutine修饰器 @gen.coroutine def coroutine_visit(): http_client=AsyncHTTPClient() response=yield http_client.fetch("http://www.baidu.com") print(response.body)
In diesem Beispiel wird weiterhin der asynchrone Client AsyncHTTPClient für den Seitenzugriff verwendet. Der Dekorator @gen.coroutine erklärt, dass es sich um eine Coroutine-Funktion handelt. Aufgrund des yield-Schlüsselworts ist es nicht erforderlich, eine Callback-Funktion in den Code zu schreiben, um die Zugriffsergebnisse zu verarbeiten. Stattdessen kann die Ergebnisverarbeitungsanweisung direkt nach geschrieben werden Ertragserklärung.
2. Rufen Sie die Coroutine-Funktion auf
Da die Tornado-Coroutine auf der Grundlage des Python-Schlüsselworts yield implementiert wird, kann sie nicht direkt wie eine gewöhnliche Funktion aufgerufen werden.
Coroutine-Funktionen können auf die folgenden drei Arten aufgerufen werden:
Wird über das Schlüsselwort yield innerhalb einer Funktion aufgerufen, die selbst eine Coroutine ist.
Wenn IOLoop nicht gestartet ist, wird es über die Funktion run_sync() von IOLoop aufgerufen.
Wenn IOLoop gestartet wurde, wird es über die Funktion spawn_callback() von IOLoop aufgerufen.
Beispiel: Aufruf der Coroutine-Funktion über die Coroutine-Funktion
Code:
#用协程技术开发网页访问功能 from tornado import gen #引入协程库gen from tornado.httpclient import AsyncHTTPClient import time #使用gen.coroutine修饰器 @gen.coroutine def coroutine_visit(): http_client=AsyncHTTPClient() response=yield http_client.fetch("http://www.baidu.com") print(response.body) @gen.coroutine def outer_coroutine(): print("start call coroutine_visit") yield coroutine_visit() print("end call coroutine_cisit")
In diesem Beispiel sind äußere_coroutine() und coroutine_visit() beides Coroutine-Funktionen Programmierfunktionen, sodass sie über das Schlüsselwort yield aufgerufen werden können. _
Beispiel: Wenn IOLoo nicht gestartet wurde, wird es über die Funktion run_sync() von IOLoop aufgerufen.
IOLoop ist das Hauptereignisschleifenobjekt von Tornado. Das Tornado-Programm verwendet es, um Zugriffsanfragen von externen Clients zu überwachen und entsprechende Vorgänge auszuführen.Code:
#用协程技术开发网页访问功能 from tornado import gen #引入协程库gen from tornado.httpclient import AsyncHTTPClient from tornado.ioloop import IOLoop #引入IOLoop对象 #使用gen.coroutine修饰器 @gen.coroutine def coroutine_visit(): http_client=AsyncHTTPClient() response=yield http_client.fetch("http://www.baidu.com") print(response.body) def func_normal(): print("start call coroutine_visit") IOLoop.current().run_sync(lambda :coroutine_visit()) print("end call coroutine_visit")
Wenn das Programm nicht in den laufenden Zustand von IOLoop eingetreten ist, kann die Coroutine-Funktion über die Funktion run_sync() aufgerufen werden.
Hinweis: Die Funktion run_sync() blockiert den Aufruf der aktuellen Funktion, bis die aufgerufene Coroutine ausgeführt wird.
Tatsächlich erfordert Tornado, dass die Coroutine-Funktion im laufenden Zustand von IOLoop aufgerufen werden kann, aber die Funktion run_sync führt die Schritte zum Starten und Stoppen von IOLoop automatisch aus:
[IOLoop starten]》[Die von Lambda gekapselte Coroutine-Funktion aufrufen]》[IOLoop stoppen]
Beispiel: Wenn IOLoop gestartet wird, rufen Sie
Code:#用协程技术开发网页访问功能 from tornado import gen #引入协程库gen from tornado.httpclient import AsyncHTTPClient from tornado.ioloop import IOLoop #引入IOLoop对象 #使用gen.coroutine修饰器 @gen.coroutine def coroutine_visit(): http_client=AsyncHTTPClient() response=yield http_client.fetch("http://www.baidu.com") print(response.body) def func_normal(): print("start call coroutine_visit") IOLoop.current().spawn_callback(coroutine_visit) print("end call coroutine_visit")
Der direkte Aufruf von Blockierungsfunktionen in Coroutinen wirkt sich auf die Leistung der Coroutinen selbst aus. Daher bietet Tornado die Verwendung von Thread-Pools zum Planen von Blockierungsfunktionen in Coroutinen an hat keinen Einfluss auf die weitere Ausführung der Coroutine selbst.
Codebeispiel:from concurrent.futures import ThreadPoolExecutor from tornado import gen #定义线程池 thread_pool=ThreadPoolExecutor(2) def mySleep(count): import time for x in range(count): time.sleep(1) @gen.coroutine def call_blocking(): print("start") yield thread_pool.submit(mySleep,10) print("end")
Bisher kennen wir die Programmiermethode des Wartens auf einen asynchronen Aufruf mit dem Schlüsselwort yield in der Coroutine. Tatsächlich ermöglicht Tornado die Verwendung eines Yield-Schlüsselworts in einer Coroutine, um auf mehrere asynchrone Aufrufe zu warten. Sie müssen diese Aufrufe nur in Form einer Liste oder eines Wörterbuchs an das Yield-Schlüsselwort übergeben.
Beispiel: Verwenden Sie eine Liste, um mehrere asynchrone Aufrufe zu übergeben#使用列表方式传递多个异步调用
from tornado import gen #引入协程库gen
from tornado.httpclient import AsyncHTTPClient
@gen.coroutine #使用gen.coroutine修饰器
def coroutine_visit():
http_client=AsyncHTTPClient()
list_response=yield [
http_client.fetch("http://www.baidu.com"),
http_client.fetch("http://www.api.jiutouxiang.com")
]
for response in list_response:
print(response.body)
Nach dem Login kopieren
Verwenden Sie weiterhin den @gen.coroutine-Dekorator, um die Coroutine im Code zu definieren, und verwenden Sie eine Liste, um eine Zahl zu übergeben wobei yield erforderlich ist. Bei einem asynchronen Aufruf kehrt yield erst dann zurück und setzt die Ausführung fort, wenn alle Aufrufe in der Liste abgeschlossen sind. yield gibt die Anrufergebnisse in einer Liste zurück.
#使用列表方式传递多个异步调用 from tornado import gen #引入协程库gen from tornado.httpclient import AsyncHTTPClient @gen.coroutine #使用gen.coroutine修饰器 def coroutine_visit(): http_client=AsyncHTTPClient() list_response=yield [ http_client.fetch("http://www.baidu.com"), http_client.fetch("http://www.api.jiutouxiang.com") ] for response in list_response: print(response.body)
Beispiel: Übergeben Sie mehrere asynchrone Aufrufe im Wörterbuchmodus: #使用列表方式传递多个异步调用
from tornado import gen #引入协程库gen
from tornado.httpclient import AsyncHTTPClient
@gen.coroutine #使用gen.coroutine修饰器
def coroutine_visit():
http_client=AsyncHTTPClient()
dict_response=yield {
"baidu": http_client.fetch("http://www.baidu.com"),
"9siliao":http_client.fetch("http://www.api.jiutouxiang.com")
}
print(dict_response["baidu"].body)
Nach dem Login kopieren
#使用列表方式传递多个异步调用 from tornado import gen #引入协程库gen from tornado.httpclient import AsyncHTTPClient @gen.coroutine #使用gen.coroutine修饰器 def coroutine_visit(): http_client=AsyncHTTPClient() dict_response=yield { "baidu": http_client.fetch("http://www.baidu.com"), "9siliao":http_client.fetch("http://www.api.jiutouxiang.com") } print(dict_response["baidu"].body)
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung von Tornado-Coroutinen in Python (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PS "Laden" Probleme werden durch Probleme mit Ressourcenzugriff oder Verarbeitungsproblemen verursacht: Die Lesegeschwindigkeit von Festplatten ist langsam oder schlecht: Verwenden Sie Crystaldiskinfo, um die Gesundheit der Festplatte zu überprüfen und die problematische Festplatte zu ersetzen. Unzureichender Speicher: Upgrade-Speicher, um die Anforderungen von PS nach hochauflösenden Bildern und komplexen Schichtverarbeitung zu erfüllen. Grafikkartentreiber sind veraltet oder beschädigt: Aktualisieren Sie die Treiber, um die Kommunikation zwischen PS und der Grafikkarte zu optimieren. Dateipfade sind zu lang oder Dateinamen haben Sonderzeichen: Verwenden Sie kurze Pfade und vermeiden Sie Sonderzeichen. Das eigene Problem von PS: Installieren oder reparieren Sie das PS -Installateur neu.

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.

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.

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.

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.

Die Ladeschnittstelle der PS-Karte kann durch die Software selbst (Dateibeschäftigung oder Plug-in-Konflikt), die Systemumgebung (ordnungsgemäße Treiber- oder Systemdateienbeschäftigung) oder Hardware (Hartscheibenbeschäftigung oder Speicherstickfehler) verursacht werden. Überprüfen Sie zunächst, ob die Computerressourcen ausreichend sind. Schließen Sie das Hintergrundprogramm und geben Sie den Speicher und die CPU -Ressourcen frei. Beheben Sie die PS-Installation oder prüfen Sie, ob Kompatibilitätsprobleme für Plug-Ins geführt werden. Aktualisieren oder Fallback die PS -Version. Überprüfen Sie den Grafikkartentreiber und aktualisieren Sie ihn und führen Sie die Systemdateiprüfung aus. Wenn Sie die oben genannten Probleme beheben, können Sie die Erkennung von Festplatten und Speichertests ausprobieren.

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.

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.
