Python 在后台运行返回列表的函数

Python 在后台运行返回列表的函数,python,python-multiprocessing,python-pool,Python,Python Multiprocessing,Python Pool,我正在尝试获取对列表中的所有元素进行web请求的函数: import myClass def getForAll(elements): myList = [] for element in elements: myList.append([element] + myClass.doThing(element)) return myList 我尝试了以下方法,但总是超时: import myClass from multiprocessi

我正在尝试获取对列表中的所有元素进行web请求的函数:

import myClass

def getForAll(elements):
    myList = []
    for element in elements:
        myList.append([element] + myClass.doThing(element))
    return myList
我尝试了以下方法,但总是超时:

    import myClass
    from multiprocessing import Pool

def getForAll(elements):
    pool = Pool()
    queries = []
    for element in elements:
        queries.append(pool.apply_async(myClass.doThing, element))
    myList = []
    for query in queries:
        myList.append(query.get(timeout=10))
    return myList
但是,这不是时间问题,因为删除超时只会导致它永远运行

queries.append(pool.apply_async(myClass.doThing, [element]))
也没什么不同

澄清一下:我使用字符串列表调用
getForAll()
,函数
doThing()
返回字符串列表。我不需要订单保持不变,但如果可能的话,那就太好了。另外,我不需要将“CPU工作”分离到几个核心上,我只是不想每个元素等待大约一秒钟,因为
doThing
调用
requests.get()
两次,我相信这可以同时对所有元素执行,而无需等待响应,让代码以相同的速度运行,而不考虑元素的数量

import myClass
from multiprocessing import Pool

def getForAll(elements):
    pool = Pool()    
    return pool.map(myClass.doThing, elements)
这非常适合我的用例。由于我使用的API的局限性,我还不得不将我的元素分成更小的组,下面的代码来自:

f = lambda A, n=5: [A[i:i + n] for i in range(0, len(A), n)]
queries = f(elements)