Python 多线程/异步编程例子 | Multithread / asynchronous programming examples in Python

Python也是可以多线程/异步编程的。异步有什么用呢?一个经典的思维模型如下:
一个程序需要到不同的服务器上去取数据,需要等各种数据收集齐了,才能继续下一步。假如有10个服务器,如果是单前程,那么只能发出一个请求,然后等待服务器返回,然后再发一下个请求。这样每个时刻只有一个服务器在工作而其他9个都是闲置的。更高效的方法是同事向10个服务器发送请求,然后马上拿到个“收据”,注意拿到收据只是说已经提交到服务器了,不代表已经完成请求。这个“收据”就叫future。请求全部提交完了,那么主程序就可以等着全部服务器完成请求。

以下是个具体的例子,用Python 2.7实现

from concurrent.futures import ThreadPoolExecutor, as_completed

# assume this is a request to a server
def add(x, y):
    return x + y

executor = ThreadPoolExecutor(max_workers=10)
futures = []
for i in range(10):
    futures.append(executor.submit(add, i, i + 1))

for f in as_completed(futures):
    print(f.result())

Leave a Comment

Your email address will not be published.