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打包管理局

兹免费准许任何人取得副本 本软件和相关文档文件(“软件”)的 在软件中不受限制,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:

上述版权公告及本许可公告须包括在 软件的拷贝或大部分。

本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合特定目的和不侵权。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与本软件有关,或使用或与本软件的其他交易有关。 软件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java处理:“神奇”函数是如何工作的   java JAXB Marshaller不需要值为null或空的元素   java如何解决类案例异常?使用arraylist   如何用Java读取JSON数据   向上转换时捕获的java错误异常   多线程是受Java内存模型约束的JVM语言还是只受Java编程语言约束的JVM语言?   在java环境中,如何将进程关联到特定监视器上运行?   json在Java中解析JsonString到JsonObject   java在这个例子中,2d精灵的非光滑运动有什么原因   java我可以使用ApacheIgnite中的EntryProcessor和Spring数据吗?   java如何在Stagemonitor中使用度量   java JavaFX Timeline动画在几个小时后会结巴   当JSON值为空时,java应用程序崩溃   java使用Spel通过另一个Spring值来计算Spring值   java更高级版本的集合。频率()   如何捕获此站点以使用PhantomJsDriver和Selenium(Java)   java在抽象类中实现compareTo()   泽西岛java Show图片例外Apper   java识别处理中的特定blob   java Cassandra 2.1.3。如何提取CommitLog