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

您的位置:首頁技術文章
文章詳情頁

Python定義一個Actor任務

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

問題

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

解決方案

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

結合使用一個線程和一個隊列可以很容易的定義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() 方法發送消息給它們。 其機制是,這個方法會將消息放入一個隊里中, 然后將其轉交給處理被接受消息的一個內部線程。 close() 方法通過在隊列中放入一個特殊的哨兵值(ActorExit)來關閉這個actor。 用戶可以通過繼承Actor并定義實現自己處理邏輯run()方法來定義新的actor。 ActorExit 異常的使用就是用戶自定義代碼可以在需要的時候來捕獲終止請求 (異常被get()方法拋出并傳播出去)。

如果你放寬對于同步和異步消息發送的要求, 類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系統中的“消息”的泛化概念可以已多種方式被擴展。 例如,你可以以元組形式傳遞標簽消息,讓actor執行不同的操作,如下:

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允許在一個工作者中運行任意的函數, 并且通過一個特殊的Result對象返回結果:

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())

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

以上就是Python定義一個Actor任務的詳細內容,更多關于Python actor任務的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
成人国产精品| 欧美国产偷国产精品三区| 精精国产xxxx视频在线野外| 综合日韩av| 97国产精品| 丝袜美腿一区| 久久在线免费| 国产精品777777在线播放 | 久久精品国内一区二区三区| 久久免费福利| 999久久久精品国产| 国产精品三上| 91嫩草精品| 精品久久99| 亚洲午夜视频| 欧美一区影院| 在线观看精品| 在线观看亚洲精品福利片| 免费观看在线综合| 欧美经典一区| 精品成人免费一区二区在线播放| 成人污污视频| 丝袜美腿亚洲色图| 精品视频一区二区三区在线观看| 欧美一级精品| 国产欧美日韩一区二区三区在线| 国产精品久久久久久久久久10秀| 午夜国产一区二区| 欧美影院精品| 成人精品动漫一区二区三区| 免费观看久久av| 日韩av中文在线观看| 久久影院一区二区三区| 免费视频一区二区三区在线观看 | 久久av导航| 99精品小视频| 亚洲人成高清| 日韩精品麻豆| 日本天堂一区| 99re国产精品| 精品国产aⅴ| 噜噜噜久久亚洲精品国产品小说| 九九久久国产| 在线观看亚洲精品福利片| 中文在线а√在线8| 在线视频日韩| 另类专区亚洲| 欧美三级第一页| 午夜精品亚洲| 中文av在线全新| 麻豆一区二区三区| 日韩高清不卡在线| 国产精品日本欧美一区二区三区| 成人国产精品一区二区免费麻豆| 中文字幕视频精品一区二区三区 | 久久国产欧美| 欧美日韩精品一区二区三区视频 | 综合激情视频| 精精国产xxxx视频在线野外| 日韩中文字幕不卡| 成人羞羞在线观看网站| 亚洲另类黄色| 999精品一区| 伊人久久在线| 精品免费视频| 青草综合视频| 国产偷自视频区视频一区二区| 高清精品久久| 欧美一区在线观看视频| 免费的成人av| 久久久久亚洲精品中文字幕| 日韩专区欧美专区| 日韩av福利| 国产日韩一区二区三区在线| 免费中文字幕日韩欧美| 精品久久电影| 国产精品亚洲欧美| 91精品国产经典在线观看| 蜜臀久久99精品久久久久久9| 久久久精品五月天| 亚洲黄色免费av| 国产精品一区二区免费福利视频| 日韩专区视频网站| 日韩精品一区二区三区中文| 日韩精品一级中文字幕精品视频免费观看 | 国产精品网在线观看| 日韩精品五月天| 亚洲欧美日本国产| 日韩中文字幕av电影| 国产麻豆综合| 蜜臀va亚洲va欧美va天堂| 石原莉奈在线亚洲二区| 蜜桃av一区二区| 在线看片一区| 中文精品电影| 欧美日一区二区三区在线观看国产免 | 伊人久久成人| 蜜桃av一区| 免费不卡中文字幕在线| 夜夜精品视频| 日韩精品中文字幕一区二区| 国产亚洲高清在线观看| 国产精品jk白丝蜜臀av小说| 麻豆精品在线观看| 另类中文字幕国产精品| 婷婷亚洲五月| 在线免费观看亚洲| 国产精品嫩草影院在线看| 精品免费在线| 婷婷成人在线| 亚洲综合五月| 久久不卡国产精品一区二区| 久久影视三级福利片| 精品三级国产| 99久久精品网站| 视频一区中文字幕| 国产精品亚洲人成在99www | 国产精品成人a在线观看| 午夜精品久久久久久久久久蜜桃| 九九综合九九| 午夜久久av | 中日韩男男gay无套| 午夜电影一区| 久久av日韩| 欧美~级网站不卡| 日本va欧美va瓶| 98精品视频| 美美哒免费高清在线观看视频一区二区| 日韩不卡手机在线v区| 久久一区精品| 尤物在线精品| 国产精品亚洲一区二区在线观看| 日韩电影免费网址| 蜜桃久久精品一区二区| 久久99影视| 亚洲精品99| 国产精品对白| 99在线观看免费视频精品观看| 久久亚洲国产精品一区二区| 国产精品欧美在线观看| 99久久99久久精品国产片果冰 | 国产麻豆一区二区三区| 91精品韩国| 日韩欧美高清一区二区三区| 97精品国产福利一区二区三区| 亚洲一区网站| 精品丝袜久久| 视频一区在线视频| 国产成人精品一区二区三区免费| 黄色日韩在线| 日本强好片久久久久久aaa| 91精品国产调教在线观看| 日韩精品免费观看视频| 欧美69视频| 久久免费视频66| 中文字幕亚洲影视| 99精品国产一区二区三区| 国产精品综合| 亚洲丝袜美腿一区| 欧美69视频| 日韩理论视频| 国产精品日本一区二区不卡视频 | 日本麻豆一区二区三区视频| 成人精品中文字幕| 欧美激情一区| 日韩一区二区三区精品| 亚洲福利国产| 国产精品2区| 日韩高清中文字幕一区| 国产精品普通话对白| 日韩一区亚洲二区| 欧美aⅴ一区二区三区视频| 亚洲精品成a人ⅴ香蕉片| 国产一区日韩欧美| 色一区二区三区| 欧美亚洲三区| 亚洲欧美网站在线观看| 久久国产精品99国产| 久久九九精品| 亚洲天堂资源| 国产福利资源一区| 欧美日韩亚洲三区| 在线看片日韩| 欧美一区=区| 国产精品91一区二区三区| 91亚洲一区| 国产suv精品一区二区四区视频 | 午夜久久av| 蜜桃tv一区二区三区| 久久精品国内一区二区三区水蜜桃| 久久精品亚洲一区二区| 日韩国产在线观看| 日韩高清在线观看一区二区| 免费人成网站在线观看欧美高清| 日韩毛片视频| 欧美韩日一区| 国产成人久久精品一区二区三区| 麻豆精品久久| 国产在视频一区二区三区吞精| 国产欧美日韩精品一区二区免费|