如何在python中使用有序输出实现concurrent.futures?

plicqrtu  于 2021-09-08  发布在  Java
关注(0)|答案(0)|浏览(251)

我主要是一名go开发人员,刚刚开始用python编写应用程序。下面是go中的一个类似实现:
https://github.com/tejzpr/ordered-concurrently
如何在python中实现这一点?
这就是我到目前为止所做的:

while True:     
    response = iot_sensor.receive()     
    future = executor.submit(response)     # get the future obj from the submission    
    queue.put_nowait(future)               # asyncio.queue(): add the future object to the queue

上面的代码获取未来并将其添加到 asyncio.queue . 下面的代码执行队列处理

async def run_queue(): 
    print('init queue processor') 
    try: 
        while True: 
            if not queue.empty(): 
                al = queue.get_nowait()      #  get the queue (futures)
                res = al.result()            #  blocking call. i.e., wait for the result from the future before moving on to the next future
                executor.submit(write_to_es, res) 
    except Exception as e: 
        print(e)

以上内容有待进一步研究 al.result() [ asyncio.queue()al.result() 执行使代码并发运行,并按照提交的顺序处理结果],然后再次提交给并发期货,将其写入elasticsearch)。
我有点能让它按我所希望的方式运行。。但是,它太慢了。。比在主进程中运行整个过程慢得多。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题