python 多进程如何提高函数效率?

查看:226
本文介绍了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 在使用多进程时,如何把函数的返回值赋值给另一个变量。 初学者,多指教

解决方案

你完全搞错了多进程的概念,你刚刚那样写,只启了一个进程

import requests
from bs4 import BeautifulSoup
from multiprocessing import Pool
import time
import re

def f(page):
    url = 'http://yanbao.stock.hexun.com/listnews1_{}.shtml'.format(page)
    d = {}
    l1 = []
    l2 =  []

    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)
    results = []
    for i in range(1,5):
        res = p.apply_async(f, args=(i, ))
        results.append(res)
    p.close()
    p.join()
    
    for res in results:
        print res.get()
    
    print(time.time()-a)

这篇关于python 多进程如何提高函数效率?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆