我目前有一个Python脚本,它向端点发出API请求,获取数据列表,将这些数据保存到一个文件中,并计算获得的记录数。
API请求目前是一个大请求,例如:‘获取过去7天的所有数据’。我知道,如果我运行7个请求,而不是一个大请求,速度会快得多,但我可以使用多线程同时运行所有7个请求-并将所有输出同时保存到同一个文件中吗?
或者我必须单独保存7个文件,然后将它们收集在一起,进行一种“后多线程处理”?或者所有7个线程会同时愉快地保存到同一个文件吗?
发布于 2016-01-05 08:03:46
在这种情况下,使用map()是显而易见的解决方案。但是内置的map不是并发的。
如果你使用的是Python3.5,你可以使用concurrent.futures的ThreadpoolExecutor.map()。
由于Python2没有concurrent.futures,我建议使用multiprocessing的Pool.map(),因为Python2中的threading模块没有对应的an。
我不确定map()方法返回的列表是否与提供给它的参数的顺序相同。文档对此并不明确。如果这对您来说很重要,请让您提供给map的函数返回其输入和结果的元组,然后在必要时随时对它们进行排序。
https://stackoverflow.com/questions/34598548
复制相似问题