繼第五節實現了簡單的執行緒安全佇列,第六節實現了同步、非同步任務物件後本節我們繼續實現消費任務佇列,處理任務物件的執行緒處理物件。
class
threadprocess
(threading.thread)
:def
__init__
(self, task_queue,
*args,
**kwargs)
:"""
執行緒處理方法初始化
:param task_queue:
:param args:
:param kwargs:
"""super
(threadprocess, self)
.__init__(
*args,
**kwargs)
self.dismiss_flag = threading.event(
)# 任務停止的標記
self.task_queue = task_queue
self.args = args
self.kwargs = kwargs
defrun(self)
:"""
執行緒執行方法
:return:
"""while
true
:# 執行緒停止標誌設定則停止執行
if self.dismiss_flag.is_set():
break
# task物件是否是task的例項
task = self.task_queue.pop()if
notisinstance
(task, task)
:continue
print
('task id:%d'
% task.id)
# print(type(task))
result = task.
callable
(*task.args,
**task.kwargs)
# 如果是非同步任務 設定返回結果
ifisinstance
(task, asynctask)
:print
('set result:%d'
% task.id)
task.set_result(result)
def__dismiss
(self)
: self.dismiss_flag.
set(
)def
stop
(self)
:"""
執行緒停止方法
:return:
"""self.__dismiss(
)
python學習七(基礎知識)
裝飾器生成器 迭代器裝飾器 decorator 或者稱為包裝器,是對函式的一種包裝。它能使函式的功能得到擴充,而同時不用修改函式本身的 它能夠增加函式執行前 執行後的行為,而不需對呼叫函式的 做任何改變 def showtime f definner start time.time f end ti...
MySQL基礎知識七
1.事務的acid原則 原子性 atomic 一致性 consist 隔離性 isolated 永續性 durable 2.事務就是將一組sql語句放在同一批次內去執行 3.mysql事務處理只支援innodb和bdb資料表型別 4.使用set語句來改變自動提交模式 set autocommit 0...
CSS基礎知識(七)
transform translate rotate scale skew matrix 值 rotate 30deg 把元素順時針旋轉 30 度。值 translate 50px,100px 把元素從左側移動 50 畫素,從頂端移動 100 畫素。值 scale 2,4 把寬度轉換為原始尺寸的 2...