栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何从python中的线程池获取结果?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何从python中的线程池获取结果?

Python实际上有一个可以使用的内置线程池,只是没有充分说明:

from multiprocessing.pool import ThreadPooldef foo(word, number):    print (word * number)    r[(word,number)] = number    return numberwords = ['hello', 'world', 'test', 'word', 'another test']numbers = [1,2,3,4,5]pool = ThreadPool(5)results = []for i in range(0, len(words)):    results.append(pool.apply_async(foo, args=(words[i], numbers[i])))pool.close()pool.join()results = [r.get() for r in results]print results

或(使用

map
代替
apply_async
):

from multiprocessing.pool import ThreadPooldef foo(word, number):    print word*number    return numberdef starfoo(args):    """    We need this because map only supports calling functions with one arg.     We need to pass two args, so we use this little wrapper function to    expand a zipped list of all our arguments.    """        return foo(*args)words = ['hello', 'world', 'test', 'word', 'another test']numbers = [1,2,3,4,5]pool = ThreadPool(5)# We need to zip together the two lists because map only supports calling functions# with one argument. In Python 3.3+, you can use starmap instead.results = pool.map(starfoo, zip(words, numbers))print resultspool.close()pool.join()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/517092.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号