码迷,mamicode.com
首页 > 编程语言 > 详细

Python高性能编程

时间:2017-10-28 13:52:37      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:run   []   art   性能   targe   har   time()   py3   ext   

 

1.串行

import time
import requests

url_lists = [
    ‘http://www.baidu.com‘,
    ‘http://fanyi.baidu.com‘,
    ‘http://map.baidu.com‘,
    ‘http://music.baidu.com/‘,
    ‘http://tieba.baidu.com‘,
    ‘http://v.baidu.com‘,
    ‘http://image.baidu.com‘,
    ‘http://zhidao.baidu.com‘,
    ‘http://news.baidu.com‘,
    ‘http://xueshu.baidu.com‘]

start_time = time.time()
for url in url_lists:
    response = requests.get(url)
    print(response.text)
print("Runtime: {}".format(time.time()-start_time))

# Runtime: 1.95

  

2.多进程

import time
import requests
from multiprocessing import Process

url_lists = [
    ‘http://www.baidu.com‘,
    ‘http://fanyi.baidu.com‘,
    ‘http://map.baidu.com‘,
    ‘http://music.baidu.com/‘,
    ‘http://tieba.baidu.com‘,
    ‘http://v.baidu.com‘,
    ‘http://image.baidu.com‘,
    ‘http://zhidao.baidu.com‘,
    ‘http://news.baidu.com‘,
    ‘http://xueshu.baidu.com‘]


def task(url):
    response = requests.get(url)
    print(response.text)

if __name__ == ‘__main__‘:
    p_list = []
    start_time = time.time()
    for url in url_lists:
        p = Process(target=task, args=(url,))
        p_list.append(p)
        p.start()
    for p in p_list:
        p.join()

    print("Runtime: {}".format(time.time() - start_time))

# Runtime: 1.91

 

3.进程池(1)

import time
import requests
from concurrent.futures import ProcessPoolExecutor

"""
Py2里    没有线程池   但是有进程池
Py3里    有线程池     有进程池
"""

url_lists = [
    ‘http://www.baidu.com‘,
    ‘http://fanyi.baidu.com‘,
    ‘http://map.baidu.com‘,
    ‘http://music.baidu.com/‘,
    ‘http://tieba.baidu.com‘,
    ‘http://v.baidu.com‘,
    ‘http://image.baidu.com‘,
    ‘http://zhidao.baidu.com‘,
    ‘http://news.baidu.com‘,
    ‘http://xueshu.baidu.com‘]

def task(url):
    response = requests.get(url)
    print(response.content)

if __name__ == ‘__main__‘:
    start_time = time.time()
    pool = ProcessPoolExecutor(10)
    for url in url_lists:
        pool.submit(task,url)
    pool.shutdown(wait=True)
    print("Runtime: {}".format(time.time() - start_time))

# Runtime: 2.00

  

3.进程池(2)

import time
import requests
from  multiprocessing import Pool


url_lists = [
    ‘http://www.baidu.com‘,
    ‘http://fanyi.baidu.com‘,
    ‘http://map.baidu.com‘,
    ‘http://music.baidu.com/‘,
    ‘http://tieba.baidu.com‘,
    ‘http://v.baidu.com‘,
    ‘http://image.baidu.com‘,
    ‘http://zhidao.baidu.com‘,
    ‘http://news.baidu.com‘,
    ‘http://xueshu.baidu.com‘]

def task(url):
    response = requests.get(url)
    return response.content
def callBackFunc(content):
    print(content)

if __name__ == ‘__main__‘:
    start_time = time.time()
    pool = Pool(10)
    for url in url_lists:
        pool.apply_async(func=task,args=(url,),callback=callBackFunc)
    pool.close()
    pool.join()
    print("Runtime: {}".format(time.time() - start_time))

# Runtime: 1.96

  

 

4.多线程

import time
import requests
from threading import Thread

url_lists = [
    ‘http://www.baidu.com‘,
    ‘http://fanyi.baidu.com‘,
    ‘http://map.baidu.com‘,
    ‘http://music.baidu.com/‘,
    ‘http://tieba.baidu.com‘,
    ‘http://v.baidu.com‘,
    ‘http://image.baidu.com‘,
    ‘http://zhidao.baidu.com‘,
    ‘http://news.baidu.com‘,
    ‘http://xueshu.baidu.com‘]


def task(url):
    response = requests.get(url)
    print(response.text)

if __name__ == ‘__main__‘:
    t_list = []
    start_time = time.time()
    for url in url_lists:
        t = Thread(target=task, args=(url,))
        t_list.append(t)
        t.start()
    for t in t_list:
        t.join()

    print("Runtime: {}".format(time.time() - start_time))

# Runtime: 0.49

  

5.线程池

import time
import requests
from concurrent.futures import ThreadPoolExecutor

"""
Py2里    没有线程池   但是有进程池
Py3里    有线程池     有进程池
"""

url_lists = [
    ‘http://www.baidu.com‘,
    ‘http://fanyi.baidu.com‘,
    ‘http://map.baidu.com‘,
    ‘http://music.baidu.com/‘,
    ‘http://tieba.baidu.com‘,
    ‘http://v.baidu.com‘,
    ‘http://image.baidu.com‘,
    ‘http://zhidao.baidu.com‘,
    ‘http://news.baidu.com‘,
    ‘http://xueshu.baidu.com‘]

def task(url):
    response = requests.get(url)
    print(response.content)

if __name__ == ‘__main__‘:
    start_time = time.time()
    pool = ThreadPoolExecutor(10)
    for url in url_lists:
        pool.submit(task,url)
    pool.shutdown(wait=True)
    print("Runtime: {}".format(time.time() - start_time))

# Runtime: 0.51

  

 

Python高性能编程

标签:run   []   art   性能   targe   har   time()   py3   ext   

原文地址:http://www.cnblogs.com/standby/p/7746405.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!