亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python的blinker信號庫怎么創建

發布時間:2022-05-05 09:23:47 來源:億速云 閱讀:158 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“python的blinker信號庫怎么創建”,內容詳細,步驟清晰,細節處理妥當,希望這篇“python的blinker信號庫怎么創建”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

一、安裝

  • 一個基于Python的強大的信號庫,它既支持簡單的對象到對象通信,也支持針對多個對象進行組播

  • 支持注冊全局命名信號,支持自定義命名信號

  • 支持匿名信號,線程安全

  • 支持與接收者之間的持久連接與短暫連接

  • 通過弱引用實現與接收者之間的自動斷開連接

  • 支持發送任意大小的數據,支持收集信號接收者的返回值

pip install blinker

二、創建發送信號

  • 信號通過 signal() 方法進行創建

  • 信號通過 send() 方法進行發送

from blinker import signal
# 創建一個信號,并給信號命名
s = signal('autofelix')
def say(args):
print('我是飛兔小哥')
# 信號注冊一個接收者
s.connect(say)
if "__main__" == __name__:
# 發送信號
s.send()

三、匿名信號

  • blinker也支持匿名信號,就是不需要指定一個具體的信號值

  • 創建的每一個匿名信號都是互相獨立的

from blinker import signal
# 創建一個匿名信號
s = signal()
def say(args):
print('我是飛兔小哥')
# 信號注冊一個接收者
s.connect(say)
if "__main__" == __name__:
# 發送信號
s.send()

四、組播信號

  • 組播信號是比較能體現出信號優點的特征

  • 多個接收者注冊到信號上,發送者只需要發送一次就能傳遞信息到多個接收者

from blinker import signal
s = signal('autofelix')
def fans_one(args):
print(f'我是粉絲一號,我關注了: {args}')
def fans_two(args):
print(f'我是粉絲二號,我關注了: {args}')
s.connect(fans_one)
s.connect(fans_two)
if "__main__" == __name__:
s.send('飛兔小哥')

五、接受方訂閱主題

  • 只有當指定的主題發送消息時才發送給接收方

from blinker import signal
s = signal('autofelix')
def fans(args):
print(f'我是個小粉絲,{args} 是我的老師')
# 信號注冊一個接收者, 并指定主題
s.connect(animal, sender='飛兔')
if "__main__" == __name__:
for i in ['飛兔', '飛兔小姐姐', '飛兔小哥哥']:
s.send(i)

六、裝飾器用法

  • 除了可以函數注冊之外還有更簡單的信號注冊方法,那就是裝飾器

from blinker import signal
s = signal('autofelix')
@s.connect
def fans_one(args):
print(f'我是粉絲一號,我關注了: {args}')
@s.connect
def fans_two(args):
print(f'我是粉絲二號,我關注了: {args}')
if "__main__" == __name__:
s.send('飛兔小哥')

七、訂閱主題的裝飾器

  • connect 的注冊方法用著裝飾器時有一個弊端就是不能夠訂閱主題

  • connect_via 方法支持訂閱主題

from blinker import signal
s = signal('autofelix')
@s.connect_via('飛兔')
def fans(args):
print(f'我是個小粉絲,{args} 是我的老師')
if "__main__" == __name__:
for i in ['飛兔', '飛兔小姐姐', '飛兔小哥哥']:
s.send(i)

八、檢查信號是否有接收者

  • 如果對于一個發送者發送消息前要準備的耗時很長

  • 為了避免沒有接收者導致浪費性能的情況

  • 可以先檢查某一個信號是否有接收者

  • 在確定有接收者的情況下才發送

from blinker import signal
a1 = signal('autofelix-1')
a2 = signal('autofelix-2')
def fans(sender):
print('我是個小粉絲')
a1.connect(fans)
if "__main__" == __name__:
res = a1.receivers
print(res)
if res:
a1.send()
res = a2.receivers
print(res)
if res:
a2.send()
else:
print("我是個偶像")

九、是否訂閱了某個信號

  • 檢查訂閱者是否由某一個信號

from blinker import signal
a1 = signal('autofelix-1')
a2 = signal('autofelix-2')
def fans(sender):
print('我是個小粉絲')
a1.connect(fans)
if "__main__" == __name__:
res = a1.has_receivers_for(fans)
print(res)
res = a2.has_receivers_for(fans)
print(res)

讀到這里,這篇“python的blinker信號庫怎么創建”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

舒城县| 白玉县| 西林县| 秦皇岛市| 海城市| 平定县| 察隅县| 那坡县| 蛟河市| 泸西县| 濉溪县| 略阳县| 齐齐哈尔市| 固原市| 闵行区| 峡江县| 三亚市| 鹰潭市| 合江县| 惠水县| 铜川市| 尉犁县| 兴海县| 昭苏县| 同仁县| 边坝县| 呼图壁县| 满洲里市| 阿城市| 靖边县| 固始县| 利辛县| 彭阳县| 大邑县| 兴国县| 财经| 当阳市| 乡宁县| 富源县| 沭阳县| 沙雅县|