Python設(shè)計(jì)模式 - 連接池模式

class?QueueObject():

????def?__init__(self,?queue,?auto_get=False):

????????self._queue?=?queue

????????self.object?=?self._queue.get()?if?auto_get?else?None

????def?__enter__(self):

????????if?self.object?is?None:

????????????self.object?=?self._queue.get()

????????return?self.object

????def?__exit__(self,?Type,?value,?traceback):

????????if?self.object?is?not?None:

????????????self._queue.put(self.object)

????????????self.object?=?None

????def?__del__(self):

????????if?self.object?is?not?None:

????????????self._queue.put(self.object)

????????????self.object?=?None

def?main():

????try:

????????import?queue

????except?ImportError:??#?python?2.x的兼容性

????????import?Queue?as?queue

????def?test_object(queue):

????????queue_object?=?QueueObject(queue,?True)

????????print('內(nèi)部?func:?{}'.format(queue_object.object))

????sample_queue?=?queue.Queue()

????sample_queue.put('yam')

????with?QueueObject(sample_queue)?as?obj:

????????print('Inside?with:?{}'.format(obj))

????print('Outside?with:?{}'.format(sample_queue.get()))

????sample_queue.put('sam')

????test_object(sample_queue)

????print('外部?func:?{}'.format(sample_queue.get()))

????if?not?sample_queue.empty():

????????print(sample_queue.get())

if?__name__?==?'__main__':

????main()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容