Jadual Kandungan
1. Isyarat
2. Blinker menggunakan
2.1 Isyarat bernama
2.2 Isyarat Anonymous
2.3 Isyarat berbilang hantaran
2.4 Penerima melanggan topik
2.5 Penggunaan Penghias
2.6 Penghias yang boleh melanggan topik
2.7 Semak sama ada isyarat mempunyai penerima
2.8 Semak sama ada pelanggan melanggan isyarat tertentu
3 blinker
Demo 3.1 Simple Flask
3.2 Isyarat tersuai
3.3 Isyarat Flask sendiri
4. Ringkasan kelebihan isyarat
Rumah pembangunan bahagian belakang Tutorial Python Pustaka isyarat kuat Python: blinker

Pustaka isyarat kuat Python: blinker

May 03, 2023 am 08:10 AM
python blinker Perpustakaan isyarat

Python 强大的信号库:blinker

1. Isyarat

Helo semua, saya sepupu saya~

Isyarat ialah cara pemberitahuan atau komunikasi pihak dan penerima. Pengirim menghantar isyarat, dan proses penerima yang menerima isyarat akan melompat ke dalam fungsi pemprosesan isyarat Selepas pelaksanaan, ia akan melompat kembali ke kedudukan asal untuk meneruskan pelaksanaan.

Isyarat biasa dalam Linux, input Ctrl+C melalui papan kekunci, adalah untuk menghantar isyarat kepada sistem untuk memberitahu sistem untuk keluar dari proses semasa.

Ciri isyarat ialah pengirim memberitahu pelanggan tentang apa yang berlaku. Menggunakan isyarat terbahagi kepada 3 langkah: mentakrifkan isyarat, memantau isyarat dan menghantar isyarat.

Python 强大的信号库:blinker

Modul komunikasi yang menyediakan konsep isyarat dalam Python adalah berkelip.

Blinker ialah pustaka isyarat berkuasa berdasarkan Python, yang menyokong komunikasi titik-ke-titik yang mudah dan multicast titik-ke-berbilang. Mekanisme isyarat flask adalah berdasarkannya. Walaupun kernel Blinker kecil, ia sangat berkuasa Ia menyokong ciri berikut:

  • Menyokong pendaftaran isyarat bernama global
  • Menyokong isyarat tanpa nama
  • Menyokong tersuai. penamaan Isyarat
  • Menyokong sambungan berterusan dan jangka pendek dengan penerima
  • Secara automatik memutuskan sambungan daripada penerima melalui rujukan yang lemah
  • Menyokong penghantaran sebarang saiz Data
  • menyokong mengumpul nilai pulangan penerima isyarat
  • Keselamatan benang

2. Blinker menggunakan

kaedah pemasangan:

pip install blinker
Salin selepas log masuk

2.1 Isyarat bernama

from blinker import signal
# 定义一个信号
s = signal('king')
def animal(args):
print('我是小钻风,大王回来了,我要去巡山')
# 信号注册一个接收者
s.connect(animal)
if "__main__" == __name__:
# 发送信号
s.send()
Salin selepas log masuk

Python 强大的信号库:blinker

2.2 Isyarat Anonymous

blinker juga menyokong isyarat tanpa nama, iaitu, tidak perlu menentukan nilai isyarat tertentu. Setiap isyarat tanpa nama yang dibuat adalah bebas antara satu sama lain.

from blinker import Signal
s = Signal()
def animal(sender):
print('我是小钻风,大王回来了,我要去巡山')
s.connect(animal)
if "__main__" == __name__:
s.send()
Salin selepas log masuk

2.3 Isyarat berbilang hantaran

Isyarat berbilang hantaran ialah ciri yang boleh mencerminkan dengan lebih baik kelebihan isyarat. Berbilang penerima didaftarkan kepada isyarat, dan penghantar hanya perlu menghantar sekali untuk menyampaikan maklumat kepada berbilang penerima.

from blinker import signal
s = signal('king')
def animal_one(args):
print(f'我是小钻风,今天的口号是: {args}')
def animal_two(args):
print(f'我是大钻风,今天的口号是: {args}')
s.connect(animal_one)
s.connect(animal_two)
if "__main__" == __name__:
s.send('大王叫我来巡山,抓个和尚做晚餐!')
Salin selepas log masuk

Python 强大的信号库:blinker

2.4 Penerima melanggan topik

Penerima menyokong melanggan topik yang ditentukan, dan hanya apabila topik yang ditentukan menghantar mesej, ia akan dihantar kepada penerima. Kaedah ini membezakan topik yang berbeza dengan baik.

from blinker import signal
s = signal('king')
def animal(args):
print(f'我是小钻风,{args} 是我大哥')
s.connect(animal, sender='大象')
if "__main__" == __name__:
for i in ['狮子', '大象', '大鹏']:
s.send(i)
Salin selepas log masuk

Python 强大的信号库:blinker

2.5 Penggunaan Penghias

Selain pendaftaran fungsi, terdapat kaedah pendaftaran isyarat yang lebih mudah, iaitu penghias.

from blinker import signal
s = signal('king')
@s.connect
def animal_one(args):
print(f'我是小钻风,今天的口号是: {args}')
@s.connect
def animal_two(args):
print(f'我是大钻风,今天的口号是: {args}')
if "__main__" == __name__:
s.send('大王叫我来巡山,抓个和尚做晚餐!')
Salin selepas log masuk

2.6 Penghias yang boleh melanggan topik

Kaedah pendaftaran Connect mempunyai kelemahan apabila menggunakan penghias, iaitu ia tidak boleh melanggan topik, jadi terdapat kaedah connect_via yang lebih maju yang menyokong melanggan kepada topik.

from blinker import signal
s = signal('king')
@s.connect_via('大象')
def animal(args):
print(f'我是小钻风,{args} 是我大哥')
if "__main__" == __name__:
for i in ['狮子', '大象', '大鹏']:
s.send(i)
Salin selepas log masuk

2.7 Semak sama ada isyarat mempunyai penerima

Jika mengambil masa yang lama untuk menyediakan pengirim menghantar mesej, untuk mengelakkan pembaziran prestasi kerana tiada penerima, anda boleh Pertama Periksa sama ada terdapat penerima untuk isyarat tertentu, dan hanya hantar apabila ia disahkan bahawa terdapat penerima, supaya tepat.

from blinker import signal
s = signal('king')
q = signal('queue')
def animal(sender):
print('我是小钻风,大王回来了,我要去巡山')
s.connect(animal)
if "__main__" == __name__:
res = s.receivers
print(res)
if res:
s.send()
res = q.receivers
print(res)
if res:
q.send()
else:
print("孩儿们都出去巡山了")
Salin selepas log masuk
{4511880240: <weakref at 0x10d02ae80; to 'function' at 0x10cedd430 (animal)>}
我是小钻风,大王回来了,我要去巡山
{}
孩儿们都出去巡山了
Salin selepas log masuk

2.8 Semak sama ada pelanggan melanggan isyarat tertentu

Anda juga boleh menyemak sama ada pelanggan melanggan isyarat tertentu

from blinker import signal
s = signal('king')
q = signal('queue')
def animal(sender):
print('我是小钻风,大王回来了,我要去巡山')
s.connect(animal)
if "__main__" == __name__:
res = s.has_receivers_for(animal)
print(res)
res = q.has_receivers_for(animal)
print(res)
Salin selepas log masuk
True
False
Salin selepas log masuk

3 blinker

Flask menyepadukan blinker sebagai penyelesaian untuk aplikasi decoupled. Dalam Flask, senario penggunaan isyarat adalah seperti berikut: sebelum permintaan tiba dan selepas permintaan tamat. Pada masa yang sama, Flask juga menyokong isyarat tersuai.

Demo 3.1 Simple Flask

from flask import Flask
app = Flask(__name__)
@app.route('/',methods=['GET','POST'],endpoint='index')
def index():
return 'hello blinker'
if __name__ == '__main__':
app.run()
Salin selepas log masuk

Apabila mengakses 127.0.0.1:5000, kembalikan kejap hello kepada penyemak imbas.

Python 强大的信号库:blinker

3.2 Isyarat tersuai

Oleh kerana Flask menyepadukan isyarat, ia diimport daripada Flask apabila menggunakan isyarat dalam Flask.

from flask import Flask
from flask.signals import _signals
app = Flask(__name__)
s = _signals.singal('msg')
def QQ(args):
print('you have msg from QQ')
s.connect(QQ)
@app.route('/',methods=['GET','POST'],endpoint='index')
def index():
s.send()
return 'hello blinker'
if __name__ == '__main__':
app.run()
Salin selepas log masuk

Python 强大的信号库:blinker

3.3 Isyarat Flask sendiri

Selain memperibadikan isyarat, anda juga boleh menggunakan isyarat terbina dalam dalam Flask. Terdapat banyak jenis isyarat yang disertakan dengan Flask, seperti berikut:

请求
request_started = _signals.signal('request-started')# 请求到来前执行
request_finished = _signals.signal('request-finished')# 请求结束后执行
模板渲染
before_render_template = _signals.signal('before-render-template')# 模板渲染前执行
template_rendered = _signals.signal('template-rendered')# 模板渲染后执行
请求执行
got_request_exception = _signals.signal('got-request-exception')# 请求执行出现异常时执行
request_tearing_down = _signals.signal('request-tearing-down')# 请求执行完毕后自动执行(无论成功与否)
appcontext_tearing_down = _signals.signal('appcontext-tearing-down') # 请求上下文执行完毕后自动执行(无论成功与否)
请求上下文中
appcontext_pushed = _signals.signal('appcontext-pushed')# 请求上下文push时执行
appcontext_popped = _signals.signal('appcontext-popped')# 请求上下文pop时执行
message_flashed = _signals.signal('message-flashed')# 调用flask在其中添加数据时,自动触发
Salin selepas log masuk

Berikut ialah contoh cara menggunakan isyarat dalam Flask sebelum permintaan tiba

from flask import Flask
from flask.signals import _signals, request_started
import time
app = Flask(__name__)
def wechat(args):
print('you have msg from wechat')
# 从flask中引入已经定好的信号,注册一个函数
request_started.connect(wechat)
@app.route('/',methods=['GET','POST'],endpoint='index')
def index():
return 'hello blinker'
if __name__ == '__main__':
app.run()
Salin selepas log masuk

Apabila permintaan datang, Flask akan melalui request_started Memberitahu penerima ialah fungsi wechat Pada masa ini, fungsi wechat dilaksanakan dahulu dan kemudian mengembalikan hasilnya kepada penyemak imbas.

Python 强大的信号库:blinker

Tetapi kaedah penggunaan ini tidak begitu sahih, kerana isyarat tidak menyokong kaedah tak segerak, jadi biasanya penerima isyarat dalam persekitaran pengeluaran adalah rangka kerja yang dikonfigurasikan untuk pelaksanaan tak segerak, seperti saderi rangka kerja tak segerak yang terkenal dalam Python.

4. Ringkasan kelebihan isyarat

:

  1. Aplikasi yang dipisahkan: menguraikan aplikasi berganding yang dijalankan secara bersiri ke dalam pelaksanaan berbilang peringkat
  2. Terbitkan Pelanggan: Kurangkan penggunaan pemanggil, maklumkan berbilang pelanggan dengan satu panggilan

Kelemahan isyarat:

  1. Tidak menyokong tak segerak
  2. Menyokong langganan Tema ini keupayaan adalah terhad

Setiap suka, tontonan, komen dan tweet semula anda adalah sangat penting bagi saya, terima kasih atas sokongan anda.

Baiklah, jumpa lagi lain kali Saya suka kucing, teknologi, dan sepupu lama Sisi lebih lagi⁽⁽ଘ( ˙꒳˙ )ଓ⁾⁾

Atas ialah kandungan terperinci Pustaka isyarat kuat Python: blinker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PHP dan Python: Paradigma yang berbeza dijelaskan PHP dan Python: Paradigma yang berbeza dijelaskan Apr 18, 2025 am 12:26 AM

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

Memilih antara php dan python: panduan Memilih antara php dan python: panduan Apr 18, 2025 am 12:24 AM

PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.

Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Apr 16, 2025 am 12:12 AM

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Adakah sambungan vscode berniat jahat? Adakah sambungan vscode berniat jahat? Apr 15, 2025 pm 07:57 PM

Sambungan kod VS menimbulkan risiko yang berniat jahat, seperti menyembunyikan kod jahat, mengeksploitasi kelemahan, dan melancap sebagai sambungan yang sah. Kaedah untuk mengenal pasti sambungan yang berniat jahat termasuk: memeriksa penerbit, membaca komen, memeriksa kod, dan memasang dengan berhati -hati. Langkah -langkah keselamatan juga termasuk: kesedaran keselamatan, tabiat yang baik, kemas kini tetap dan perisian antivirus.

Bolehkah kod studio visual digunakan dalam python Bolehkah kod studio visual digunakan dalam python Apr 15, 2025 pm 08:18 PM

Kod VS boleh digunakan untuk menulis Python dan menyediakan banyak ciri yang menjadikannya alat yang ideal untuk membangunkan aplikasi python. Ia membolehkan pengguna untuk: memasang sambungan python untuk mendapatkan fungsi seperti penyempurnaan kod, penonjolan sintaks, dan debugging. Gunakan debugger untuk mengesan kod langkah demi langkah, cari dan selesaikan kesilapan. Mengintegrasikan Git untuk Kawalan Versi. Gunakan alat pemformatan kod untuk mengekalkan konsistensi kod. Gunakan alat linting untuk melihat masalah yang berpotensi lebih awal.

Boleh kod vs dijalankan di Windows 8 Boleh kod vs dijalankan di Windows 8 Apr 15, 2025 pm 07:24 PM

Kod VS boleh dijalankan pada Windows 8, tetapi pengalaman mungkin tidak hebat. Mula -mula pastikan sistem telah dikemas kini ke patch terkini, kemudian muat turun pakej pemasangan kod VS yang sepadan dengan seni bina sistem dan pasangnya seperti yang diminta. Selepas pemasangan, sedar bahawa beberapa sambungan mungkin tidak sesuai dengan Windows 8 dan perlu mencari sambungan alternatif atau menggunakan sistem Windows yang lebih baru dalam mesin maya. Pasang sambungan yang diperlukan untuk memeriksa sama ada ia berfungsi dengan betul. Walaupun kod VS boleh dilaksanakan pada Windows 8, disyorkan untuk menaik taraf ke sistem Windows yang lebih baru untuk pengalaman dan keselamatan pembangunan yang lebih baik.

Cara menjalankan program di terminal vscode Cara menjalankan program di terminal vscode Apr 15, 2025 pm 06:42 PM

Dalam kod VS, anda boleh menjalankan program di terminal melalui langkah -langkah berikut: Sediakan kod dan buka terminal bersepadu untuk memastikan bahawa direktori kod selaras dengan direktori kerja terminal. Pilih arahan Run mengikut bahasa pengaturcaraan (seperti python python your_file_name.py) untuk memeriksa sama ada ia berjalan dengan jayanya dan menyelesaikan kesilapan. Gunakan debugger untuk meningkatkan kecekapan debug.

PHP dan Python: menyelam mendalam ke dalam sejarah mereka PHP dan Python: menyelam mendalam ke dalam sejarah mereka Apr 18, 2025 am 12:25 AM

PHP berasal pada tahun 1994 dan dibangunkan oleh Rasmuslerdorf. Ia pada asalnya digunakan untuk mengesan pelawat laman web dan secara beransur-ansur berkembang menjadi bahasa skrip sisi pelayan dan digunakan secara meluas dalam pembangunan web. Python telah dibangunkan oleh Guidovan Rossum pada akhir 1980 -an dan pertama kali dikeluarkan pada tahun 1991. Ia menekankan kebolehbacaan dan kesederhanaan kod, dan sesuai untuk pengkomputeran saintifik, analisis data dan bidang lain.

See all articles