Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每10秒清空一个Python deque_Python - Fatal编程技术网

每10秒清空一个Python deque

每10秒清空一个Python deque,python,Python,我有一个Python deque,每次我都会在这个deque中附加它 pre_label = collections.deque(maxlen=5) while True: #do something function(name) pre_label.append() 我有: pre_label = deque(['john', 'zari', 'fai'], maxlen=3) 我希望每10秒有以下输出: pre_label = deque([], ma

我有一个Python deque,每次我都会在这个deque中附加它

pre_label = collections.deque(maxlen=5)
while True:
      #do something
      function(name)
      pre_label.append()
我有:

pre_label = deque(['john', 'zari', 'fai'], maxlen=3)
我希望每10秒有以下输出:

pre_label = deque([], maxlen=3)

因此,有两种方法可以让我立即做到这一点:

  • 螺纹溶液 如果您使用的是python 2,或者您不想执行异步,那么这应该可以: 快速免责声明:我不经常使用线程,所以您应该在这方面寻求更多建议。:)
    从集合导入数据
    甲板=deque([],最大=3)
    ##螺纹溶液
    从线程导入线程
    导入时间
    def clear_deque():
    “”“这是一个小函数,用于清除队列并在清除时打印内容”“”
    global deck#您可能应该避免使用global,但我们需要一个对底层对象的引用,以使clear实际起作用。
    虽然(正确):
    时间。睡眠(3)#你应该把这个增加到10。此外,在开始睡觉之前,要留出一段时间,以便在第一次清理之前进行。
    内容=列表(甲板)
    甲板=deque([],最大=3)
    打印(“\n |>Deck={}”。格式(内容))
    t=Thread(target=clear_deque)#创建一个新线程来调用这个函数
    t、 daemon=True#将线程标记为守护进程,以便在程序正常退出时将其终止
    t、 start()#annd启动线程!
    #和一个哑循环来验证功能
    尽管如此:
    v=输入(“添加内容>”)
    甲板。附加(v)
    t、 加入
    
  • 如果您使用的是Python3,那么可以使用异步工作程序实现类似的解决方案。这个例子演示了如何做到这一点,但是如果您采用异步方式,则需要确保所有长时间运行的进程都是异步的,因此可能需要对体系结构进行重大的重新设计
  • 导入异步IO
    随机输入
    从集合导入deque
    甲板=deque([],最大=10)
    异步def clear_deque():
    全球甲板
    尽管如此:
    等待asyncio.sleep(3)
    内容=列表(甲板)
    打印(f“\n |>组内容:{contents}”)
    甲板=deque([],最大=10)
    异步定义添加到定义():
    尽管如此:
    等待asyncio.sleep(random.random())
    v=随机随机随机数(1,10)
    打印(f“添加:{v}”)
    甲板。附加(v)
    loop=asyncio.get\u event\u loop()
    actions=asyncio.gather(将_添加到_-deque(),清除_-deque())
    循环。运行\u直到\u完成(操作)