python 3的同步堆栈数据结构
pystack-sherryt400的Python项目详细描述
pystack
python 3的同步堆栈数据结构
用法
from stack import Stack
stack = Stack()
# push item
stack.push('item')
# pop item
item = stack.pop()
定义大小
stack = Stack(10)
生产者消费者示例
from stack import Stack
import random
from threading import Thread
from time import sleep
_stack = Stack(10)
item_number = 0
class Producer(Thread):
__id = 1
def __init__(self, stack: Stack):
super().__init__(name='P-%d' % Producer.__id)
self.__stack = stack
Producer.__id = Producer.__id + 1
pass
def run(self):
global item_number
while (True):
item = 'item_%d' % item_number
self.__stack.push(item)
print(self.name, ' produced ', item)
item_number = item_number + 1
sleep(random.randint(0, 1) * 0.3)
class Consumer(Thread):
__id = 1
def __init__(self, stack):
super().__init__(name='C-%d' % Consumer.__id)
self.__stack = stack
Consumer.__id = Consumer.__id + 1
pass
def run(self):
global item_number
while (True):
item = self.__stack.pop()
print(self.name, ' consumed ', item)
item_number = item_number - 1
sleep(random.randint(0, 1) * 0.3)
p1 = Producer(_stack)
p2 = Producer(_stack)
p3 = Producer(_stack)
c1 = Consumer(_stack)
c2 = Consumer(_stack)
c3 = Consumer(_stack)
p1.start()
p2.start()
p3.start()
c1.start()
c2.start()
c3.start()
许可证
版权所有(c)2018 Python打包管理局
兹免费准许任何人取得副本 本软件和相关文档文件(“软件”)的 在软件中不受限制,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:
上述版权公告及本许可公告须包括在 软件的拷贝或大部分。
本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合特定目的和不侵权。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与本软件有关,或使用或与本软件的其他交易有关。 软件。