zoukankan      html  css  js  c++  java
  • asyncio queue

    from asyncio import Queue,sleep
    import asyncio
    from threading import Thread
    import time
    
    qu=Queue()
    #put
    
    async def putQ():
        global qu
        print('start put')
        i=1
        while True:
            print('put sleep')
            await sleep(1)
            print('put sleep')
            await qu.put(i)
            if i<=20:
                print('put',i)
            else:
                break
            i+=1
    
    #get
    async def getQ():
        global qu
        while True:
            await sleep(0.1)
            if qu.qsize() != 0:
                a= await qu.get()
                print('get',a)
            else:
                print('no get')
    
    def start_loop(loop):
        asyncio.set_event_loop(loop)
        loop.run_forever()
    
    new_loop=asyncio.new_event_loop()
    t=Thread(target=start_loop,args=(new_loop,))
    t.start()
    
    # t1=asyncio.create_task(putQ())
    
    taskput=asyncio.run_coroutine_threadsafe(putQ(),loop=new_loop)
    taskget=asyncio.run_coroutine_threadsafe(getQ(),loop=new_loop)
    
    while True:
        time.sleep(1)
    

     

    from asyncio import Queue,sleep
    import asyncio
    from threading import Thread
    import time
    
    qu=Queue()
    #put
    
    async def putQ(qu):
        print('start put')
        i=1
        while True:
            print('put sleep')
            await sleep(1)
            print('put sleep')
            await qu.put(i)
            if i<=20:
                print('put',i)
            else:
                break
            i+=1
    
    #get
    async def getQ(qu):
        while True:
            await sleep(0.1)
            if qu.qsize() != 0:
                a= await qu.get()
                print('get',a)
            else:
                print('no get')
    
    def start_loop(loop):
        asyncio.set_event_loop(loop)
        loop.run_forever()
    
    new_loop=asyncio.new_event_loop()
    t=Thread(target=start_loop,args=(new_loop,))
    t.start()
    
    # t1=asyncio.create_task(putQ())
    
    taskput=asyncio.run_coroutine_threadsafe(putQ(qu),loop=new_loop)
    taskget=asyncio.run_coroutine_threadsafe(getQ(qu),loop=new_loop)
    
    while True:
        time.sleep(1)
    

      

     

  • 相关阅读:
    Linux线程信号
    有理想的程序员必须知道的15件事
    Linux下 mplayer 使用手册
    Winxp下 gvim 编程环境搭建
    在WPF中弹出右键菜单时判断鼠标是否选中该项
    F#基本类型——Discriminated Unions
    在WPF的TreeView中实现右键选定
    WPF TreeView tools
    F#基本类型——Structure
    增强了一下DownloaderPlus的视频转换功能
  • 原文地址:https://www.cnblogs.com/pythonClub/p/10107537.html
Copyright © 2011-2022 走看看