加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何阻止和等待基于回调的异步,Python函数调用

发布时间:2020-12-16 22:47:59 所属栏目:Python 来源:网络整理
导读:我有一个Python脚本会产生许多异步请求.我正在使用的API进行回调. 主函数调用run,我希望它阻止执行,直到所有请求都返回. 我可以在Python 2.7中使用什么来实现这一目标? def run(): for request in requests: client.send_request(request,callback)def call

我有一个Python脚本会产生许多异步请求.我正在使用的API进行回调.

主函数调用run,我希望它阻止执行,直到所有请求都返回.

我可以在Python 2.7中使用什么来实现这一目标?

def run():
    for request in requests:
        client.send_request(request,callback)

def callback(error,response):
    # handle response
    pass

def main():
    run()

    # I want to block here
最佳答案
我发现最简单,侵入性最小的方法是使用threading.Event,available in 2.7.

import threading
import functools

def run():
    events = []
    for request in requests:
        event = threading.Event()
        callback_with_event = functools.partial(callback,event)
        client.send_request(request,callback_with_event)
        events.append(event)

    return events

def callback(event,error,response):
    # handle response
    event.set()

def wait_for_events(events):
    for event in events:
        event.wait()

def main():
    events = run()
    wait_for_events(events)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读