需求
给定一个list 针对list 中每个元素执行一定的操作(这个操作很费时间,例如爬数据的时候调用某个网站的接口),返回操作后的list
例如 给定 1-10个数,在每个数字后面加个字母a
方法
1、利用线程池pool 及map 函数 实现
1 from multiprocessing import Pool 2 from multiprocessing.dummy import Pool as ThreadPool 3 import time 4 pool = ThreadPool(10) 5 6 #定义函数 7 def add(x): 8 time.sleep(0.2) 9 return str(x) + ‘a‘ 10 11 ll = list(range(0,10)) 12 13 14 #原始map 15 start = time.time() 16 res = map(add, ll) 17 print res 18 print time.time() - start 19 20 #线程池map 21 start = time.time() 22 res = pool.map(add,ll) 23 print res 24 print time.time() - start
结论:
可以发现 运行时间缩短了。一定要保证所执行的函数比较费时间,才可以用,否则 大部分时间都用在分发任务上了,
多线程不一定比单线程快。 感兴趣的同学可以试试把time.sleep()去掉。
参考:
http://python.jobbole.com/81690/
原文地址:https://www.cnblogs.com/zle1992/p/8431312.html
时间: 2024-10-23 19:01:31