python 多进程如何提高函数效率?
1 如何利用multiprocessing 库提高单个函数的执行效率
2 代码如下:
def f():
urls = ['http://yanbao.stock.hexun.com/listnews1_{}.shtml'.format(i) for i in range(1,5)]
d = {}
l1 = []
l2 = []
for url in urls:
con = requests.get(url).text
soup = BeautifulSoup(con, 'lxml')
stockname = [i.string.split(':')[0] for i in soup.find_all('a',class_ = 'fxx_wb')] #得到每个研报的链接
t = [i.string for i in soup.find_all(text=re.compile('\d+-\d+-\d'))] # 得到研报发布时间
l1.extend(stockname)
l2.extend(t)
d['stockname'] = l1
d['time'] = l2
return d
if __name__ == '__main__':
a = time.time()
p = Pool(4)
# # l.extend(p.map(f,urls))
info1 = p.apply_async(f)
p.close()
p.join()
print(info1)
print(time.time()-a)
c = time.time()
info2 = f()
print(info2)
print(time.time()-c)
3 urls这个变量是自己构造的,把range参数改变可以有很多。自己的想法是利用多进程执行这个函数,通过函数的返回值赋值给一个变量比如info1和info2,然后将info这个变量写入文件。
问题:1 多进程的方法所用时间没有明显减少,甚至要多,可能使用的方法不正确 2 在使用多进程时,如何把函数的返回值赋值给另一个变量。 初学者,多指教
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你完全搞错了多进程的概念,你刚刚那样写,只启了一个进程