前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python实现带有阻塞和超时放弃功能的队列结构

Python实现带有阻塞和超时放弃功能的队列结构

作者头像
Python小屋屋主
发布2018-04-16 17:24:26
1.4K0
发布2018-04-16 17:24:26
举报
文章被收录于专栏:Python小屋Python小屋

本文代码对Python列表进行封装并模拟了队列结构,入队时如果队列已满则阻塞当前线程,超时则放弃;出队时如果队列已空则阻塞当前线程,超时则放弃。

import time

class myQueue:

def __init__(self, size = 10):

self._content = []

self._size = size

self._current = 0

def setSize(self, size):

if size < self._current:

#如果缩小队列,应删除后面的元素

for i in range(size, self._current)[::-1]:

del self._content[i]

self._current = size

self._size = size

def put(self, v, timeout=999999):

#模拟入队,在列表尾部追加元素

if self._current < self._size:

self._content.append(v)

self._current = self._current+1

else:

#队列满,阻塞,超时放弃

for i in range(timeout):

time.sleep(1)

if self._current < self._size:

self._content.append(v)

self._current = self._current+1

break

else:

return '队列已满,超时放弃'

def get(self, timeout=999999):

#模拟出队,从列表头部弹出元素

if self._content:

self._current = self._current-1

return self._content.pop(0)

else:

#队列为空,阻塞,超时放弃

for i in range(timeout):

time.sleep(1)

if self._content:

self._current = self._current-1

return self._content.pop(0)

else:

return '队列为空,超时放弃'

def show(self):

#如果列表非空,输出列表

if self._content:

print(self._content)

else:

print('The queue is empty')

def empty(self):

self._content = []

self._current = 0

def isEmpty(self):

return not self._content

def isFull(self):

return self._current == self._size

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档