日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Python定義一個Actor任務(wù)

瀏覽:15日期:2022-07-16 08:00:29

問題

你想定義跟actor模式中類似“actors”角色的任務(wù)

解決方案

actor模式是一種最古老的也是最簡單的并行和分布式計算解決方案。 事實上,它天生的簡單性是它如此受歡迎的重要原因之一。 簡單來講,一個actor就是一個并發(fā)執(zhí)行的任務(wù),只是簡單的執(zhí)行發(fā)送給它的消息任務(wù)。 響應(yīng)這些消息時,它可能還會給其他actor發(fā)送更進一步的消息。 actor之間的通信是單向和異步的。因此,消息發(fā)送者不知道消息是什么時候被發(fā)送, 也不會接收到一個消息已被處理的回應(yīng)或通知。

結(jié)合使用一個線程和一個隊列可以很容易的定義actor,例如:

from queue import Queuefrom threading import Thread, Event# Sentinel used for shutdownclass ActorExit(Exception): passclass Actor: def __init__(self): self._mailbox = Queue() def send(self, msg): ’’’ Send a message to the actor ’’’ self._mailbox.put(msg) def recv(self): ’’’ Receive an incoming message ’’’ msg = self._mailbox.get() if msg is ActorExit: raise ActorExit() return msg def close(self): ’’’ Close the actor, thus shutting it down ’’’ self.send(ActorExit) def start(self): ’’’ Start concurrent execution ’’’ self._terminated = Event() t = Thread(target=self._bootstrap) t.daemon = True t.start() def _bootstrap(self): try: self.run() except ActorExit: pass finally: self._terminated.set() def join(self): self._terminated.wait() def run(self): ’’’ Run method to be implemented by the user ’’’ while True: msg = self.recv()# Sample ActorTaskclass PrintActor(Actor): def run(self): while True: msg = self.recv() print(’Got:’, msg)# Sample usep = PrintActor()p.start()p.send(’Hello’)p.send(’World’)p.close()p.join()

這個例子中,你使用actor實例的 send() 方法發(fā)送消息給它們。 其機制是,這個方法會將消息放入一個隊里中, 然后將其轉(zhuǎn)交給處理被接受消息的一個內(nèi)部線程。 close() 方法通過在隊列中放入一個特殊的哨兵值(ActorExit)來關(guān)閉這個actor。 用戶可以通過繼承Actor并定義實現(xiàn)自己處理邏輯run()方法來定義新的actor。 ActorExit 異常的使用就是用戶自定義代碼可以在需要的時候來捕獲終止請求 (異常被get()方法拋出并傳播出去)。

如果你放寬對于同步和異步消息發(fā)送的要求, 類actor對象還可以通過生成器來簡化定義。例如:

def print_actor(): while True: try: msg = yield # Get a message print(’Got:’, msg) except GeneratorExit: print(’Actor terminating’)# Sample usep = print_actor()next(p) # Advance to the yield (ready to receive)p.send(’Hello’)p.send(’World’)p.close()

討論

actor模式的魅力就在于它的簡單性。 實際上,這里僅僅只有一個核心操作 send() . 甚至,對于在基于actor系統(tǒng)中的“消息”的泛化概念可以已多種方式被擴展。 例如,你可以以元組形式傳遞標簽消息,讓actor執(zhí)行不同的操作,如下:

class TaggedActor(Actor): def run(self): while True: tag, *payload = self.recv() getattr(self,’do_’+tag)(*payload) # Methods correponding to different message tags def do_A(self, x): print(’Running A’, x) def do_B(self, x, y): print(’Running B’, x, y)# Examplea = TaggedActor()a.start()a.send((’A’, 1)) # Invokes do_A(1)a.send((’B’, 2, 3)) # Invokes do_B(2,3)a.close()a.join()

作為另外一個例子,下面的actor允許在一個工作者中運行任意的函數(shù), 并且通過一個特殊的Result對象返回結(jié)果:

from threading import Eventclass Result: def __init__(self): self._evt = Event() self._result = None def set_result(self, value): self._result = value self._evt.set() def result(self): self._evt.wait() return self._resultclass Worker(Actor): def submit(self, func, *args, **kwargs): r = Result() self.send((func, args, kwargs, r)) return r def run(self): while True: func, args, kwargs, r = self.recv() r.set_result(func(*args, **kwargs))# Example useworker = Worker()worker.start()r = worker.submit(pow, 2, 3)worker.close()worker.join()print(r.result())

最后,“發(fā)送”一個任務(wù)消息的概念可以被擴展到多進程甚至是大型分布式系統(tǒng)中去。 例如,一個類actor對象的 send() 方法可以被編程讓它能在一個套接字連接上傳輸數(shù)據(jù) 或通過某些消息中間件(比如AMQP、ZMQ等)來發(fā)送。

以上就是Python定義一個Actor任務(wù)的詳細內(nèi)容,更多關(guān)于Python actor任務(wù)的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲一区资源| 欧美91视频| 视频一区二区不卡| 激情视频一区二区三区| 亚洲www啪成人一区二区| 久久精品欧洲| 亚洲精品乱码日韩| 久久av在线| 亚洲色图国产| 亚洲区国产区| 日韩成人午夜精品| 日本va欧美va精品发布| 亚洲精品伊人| 日本成人中文字幕| 国产精品极品在线观看| 久久精品一区二区三区中文字幕| 久久精品99国产精品日本| 欧美日韩伊人| 福利一区和二区| 免费视频国产一区| 日韩高清不卡一区| 国产精品啊啊啊| 日韩毛片视频| 精品91久久久久| 国产欧美69| 亚洲福利久久| 欧美伊人久久| 日韩高清在线观看一区二区| 伊人精品在线| 国产麻豆一区二区三区| 久久天堂影院| 伊人久久亚洲热| 欧美激情91| 亚洲二区精品| 国产精品九九| 亚洲国内欧美| 日日夜夜免费精品| 精品三级久久| 国产欧美日韩精品一区二区三区| 日韩在线欧美| 久久99青青| 日本在线一区二区三区| 久久激情中文| 久久香蕉网站| 国产精品玖玖玖在线资源| 久久99伊人| 女人天堂亚洲aⅴ在线观看| 精品三级av在线导航| 欧美久久亚洲| 久久www成人_看片免费不卡| 久久精品国产福利| 亚洲中午字幕| 久久要要av| 精品亚洲a∨| 精品一区二区三区的国产在线观看| 亚洲伊人精品酒店| 亚洲最新av| 免费人成黄页网站在线一区二区| 欧美va天堂在线| 国产综合亚洲精品一区二| 午夜影院一区| 成人啊v在线| 欧美精品一二| 久久精品国产999大香线蕉| 国产三级一区| 国产亚洲高清一区| 日本午夜精品一区二区三区电影| 久久国产成人| 香蕉精品视频在线观看| 伊人精品一区| 亚洲乱码一区| 国产精品多人| 神马久久午夜| 国产麻豆精品| 国产一区二区三区91| 日韩毛片在线| 午夜在线视频一区二区区别| 亚洲免费专区| 久久影院一区二区三区| 五月天av在线| 亚洲另类av| 麻豆传媒一区二区三区| 精品久久久久中文字幕小说| 色在线中文字幕| 免费在线看一区| 麻豆精品在线播放| 自由日本语亚洲人高潮| 日韩精品免费视频人成| 国产精品久久乐| 久久婷婷av| 国产免费av一区二区三区| 国产精品亚洲一区二区三区在线观看| 国产一区久久| 国产欧美亚洲一区| 欧美亚洲国产激情| 日韩一区二区三免费高清在线观看| 欧美日韩18| 日韩三区在线| 国产精品综合色区在线观看| 亚洲二区免费| 国产成人久久| 91麻豆精品激情在线观看最新| 91精品精品| 一区二区国产在线观看| 久久精品国产亚洲一区二区三区| 日韩黄色免费网站| 久久一区二区三区喷水| 毛片不卡一区二区| 日韩福利视频一区| 日韩午夜免费| 九色porny丨国产首页在线| 国产精品久久亚洲不卡| 亚洲国产成人精品女人| 精品国产美女a久久9999| 国产一卡不卡| 天堂av一区| 亚洲另类视频| 中文字幕一区日韩精品| 激情五月综合| 欧美肉体xxxx裸体137大胆| 福利一区和二区| 国产成人久久| 日韩精品1区| 日韩精品一区二区三区免费观影 | 性色一区二区| 中文字幕人成乱码在线观看| 国产欧美日韩| 欧美激情aⅴ一区二区三区 | 日韩激情一二三区| 中文一区一区三区免费在线观 | 美女国产精品| 免费不卡中文字幕在线| 国产一区二区中文| 91高清一区| 蜜臀av性久久久久蜜臀aⅴ四虎| 夜夜嗨av一区二区三区网站四季av| 涩涩av在线| 美女毛片一区二区三区四区| 国产一区二区中文| 国产亚洲亚洲| 蜜臀av一区二区三区| 日韩国产高清在线| 激情不卡一区二区三区视频在线| 精品国产91| 欧美成人国产| 亚洲欧美日本国产| 另类综合日韩欧美亚洲| 国产成人免费视频网站视频社区| 日本在线精品| 亚洲三级精品| 久久久久黄色| 神马午夜久久| 日韩一区二区三区免费视频| 国产成年精品| 五月天久久网站| 国产精品久一| 婷婷综合五月| 国产精品手机在线播放| 最近高清中文在线字幕在线观看1| 欧美日韩精品一区二区视频| 六月婷婷一区| 成人亚洲欧美| 国产日韩高清一区二区三区在线| 中文字幕在线免费观看视频| 人人爽香蕉精品| 韩国精品主播一区二区在线观看| 五月天综合网站| 欧美1区2区3| 免费人成在线不卡| 日本久久综合| 91亚洲精品在看在线观看高清| 视频小说一区二区| 国产欧美日韩精品一区二区免费 | 青青国产91久久久久久| 亚洲不卡av不卡一区二区| 亚洲精品一二三**| 欧洲激情综合| 高清久久精品| 久久爱www.| 婷婷五月色综合香五月| 国产综合欧美| 久久久久国产精品一区三寸| 久久久精品国产**网站| 欧美影院精品| 午夜久久av| 在线观看一区| 亚洲精品欧洲| 亚洲乱码视频| 日本中文字幕视频一区| 噜噜噜久久亚洲精品国产品小说| 在线日韩中文| 1000部精品久久久久久久久| а√天堂8资源在线| 国产第一亚洲| 国产成人精品一区二区三区在线| 欧美日韩一区二区三区不卡视频 | 亚洲另类av| 日韩高清在线观看一区二区| 在线国产日韩| 欧美一区激情|