<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Waspvae的博客]]></title><description><![CDATA[专注python（欢迎关注公众号【python数据之路】）]]></description><link>https://blog.youkuaiyun.com/Waspvae</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Waspvae]]></copyright><item><title><![CDATA[并发与并行,同步与异步阻塞]]></title><link>https://blog.youkuaiyun.com/Waspvae/article/details/80822888</link><guid>https://blog.youkuaiyun.com/Waspvae/article/details/80822888</guid><author>Waspvae</author><pubDate>Wed, 27 Jun 2018 00:09:59 +0800</pubDate><description><![CDATA[并发与并行

 
并发：指的是任务数多余cpu核数，通过操作系统的各种任务调度算法， 
实现用多个任务“一起”执行（实际上总有一些任务不在执行，因为切换任务的速度相当快， 
看上去一起执行而已）,一个 CPU 执行多个任务.
并行：指的是任务数小于等于cpu核数，即任务真的是一起执行的。多个 CPU 执行多个任务（一个 CPU 负责一个任务） 
可以这样理解: 


  你吃饭吃到一半，电话来了，...]]></description><category></category></item><item><title><![CDATA[MySQL 数据库基本操作(1)]]></title><link>https://blog.youkuaiyun.com/Waspvae/article/details/80822569</link><guid>https://blog.youkuaiyun.com/Waspvae/article/details/80822569</guid><author>Waspvae</author><pubDate>Tue, 26 Jun 2018 23:38:57 +0800</pubDate><description><![CDATA[准备工作

在 windows 和 Ubuntu 安装 MySQL。具体安装步骤可去 csdn 论坛查询。



命令行脚本



数据库的操作


连接数据库




注意：sql 语句最后需要以分号 ；结尾
mysql -uroot -p;
输入密码即可进入数据库。


退出数据库




qiut，exit，ctrl + d；


查看所有数据库




show databases;


...]]></description><category></category></item><item><title><![CDATA[Python获取当前页面内的所有链接的五种方法]]></title><link>https://blog.youkuaiyun.com/Waspvae/article/details/80738559</link><guid>https://blog.youkuaiyun.com/Waspvae/article/details/80738559</guid><author>Waspvae</author><pubDate>Tue, 19 Jun 2018 20:19:36 +0800</pubDate><description><![CDATA[本文讲述了 Python 获取当前页面内的所有链接的五种方法,分享给大家仅供参考,具体如下:



# 利用 requests_html
from requests_html import HTMLSession
session = HTMLSession()
url = 'https://www.baidu.com'
r = session.get(url)
print(r.html.links...]]></description><category></category></item><item><title><![CDATA[爬取网易云热门音乐歌单]]></title><link>https://blog.youkuaiyun.com/Waspvae/article/details/80700071</link><guid>https://blog.youkuaiyun.com/Waspvae/article/details/80700071</guid><author>Waspvae</author><pubDate>Fri, 15 Jun 2018 00:47:25 +0800</pubDate><description><![CDATA[需求分析

每当歌荒时,总想找那些播放量比较高的歌单听,毕竟这么多人选择的歌单歌曲质量总会有保证.



爬取目标

本文将提取网易云音乐 播放量在1000万 以上的歌单名称，播放量和链接地址.

准备工作

保证电脑安装了 python3.6 和已经安装好了 selenium 库.没安装的可通过 在终端输入  pip install selenium 进行安装.

爬取分析

打开歌单的 url...]]></description><category></category></item><item><title><![CDATA[装饰器]]></title><link>https://blog.youkuaiyun.com/Waspvae/article/details/80685823</link><guid>https://blog.youkuaiyun.com/Waspvae/article/details/80685823</guid><author>Waspvae</author><pubDate>Wed, 13 Jun 2018 21:58:17 +0800</pubDate><description><![CDATA[在学习装饰器之前我们先了解下什么是闭包。



闭包


函数引用




def test1():
    print(&quot;--- in test1 func----&quot;)

# 调用函数
test1()

# 引用函数
ret = test1

print(id(ret))
print(id(test1))

#通过引用调用函数
ret()

运行结果：



--- in test1 func-...]]></description><category></category></item><item><title><![CDATA[python 爬虫——爬取百度文库VIP内容]]></title><link>https://blog.youkuaiyun.com/Waspvae/article/details/80673029</link><guid>https://blog.youkuaiyun.com/Waspvae/article/details/80673029</guid><author>Waspvae</author><pubDate>Tue, 12 Jun 2018 23:55:19 +0800</pubDate><description><![CDATA[
转载自：爬取百度文库




代码实现



import requests
import re
import json
import os

session = requests.session()


def fetch_url(url):
    return session.get(url).content.decode('gbk')


def get_doc_id(url):
   ...]]></description><category></category></item><item><title><![CDATA[Python算法——插入排序]]></title><link>https://blog.youkuaiyun.com/Waspvae/article/details/80672854</link><guid>https://blog.youkuaiyun.com/Waspvae/article/details/80672854</guid><author>Waspvae</author><pubDate>Tue, 12 Jun 2018 23:35:46 +0800</pubDate><description><![CDATA[插入排序


插入排序（英语：Insertion Sort）是一种简单直观的排序算法。它的工作原理是通过构建有序序列，对于未排序数据，在已排序序列中从后向前扫描，找到相应位置并插入。插入排序在实现上，通常采用in-place排序（即只需用到  O(1) 的额外空间的排序），因而在从后向前扫描过程中，需要反复把已排序元素逐步向后挪位，为最新元素提供插入空间。




算法描述


从第一个元素开始，...]]></description><category></category></item><item><title><![CDATA[Python算法--冒泡排序]]></title><link>https://blog.youkuaiyun.com/Waspvae/article/details/80659524</link><guid>https://blog.youkuaiyun.com/Waspvae/article/details/80659524</guid><author>Waspvae</author><pubDate>Mon, 11 Jun 2018 23:41:27 +0800</pubDate><description><![CDATA[冒泡排序

冒泡排序（英语：Bubble Sort）是一种简单的排序算法。它重复地走访过要排序的数列，一次比较两个元素，如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换，也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

冒泡排序算法的运作如下：

1.比较相邻的元素。如果第一个比第二个大，就交换他们两个。 
2.对每...]]></description><category></category></item><item><title><![CDATA[爬取马云的微博]]></title><link>https://blog.youkuaiyun.com/Waspvae/article/details/80629652</link><guid>https://blog.youkuaiyun.com/Waspvae/article/details/80629652</guid><author>Waspvae</author><pubDate>Sat, 09 Jun 2018 01:01:25 +0800</pubDate><description><![CDATA[分析请求

我们打开 Ajax 的 XHR 过滤器，然后一直滑动页面加载新的微博内容，可以看到会不断有Ajax请求发出。 
我们选定其中一个请求来分析一下它的参数信息，点击该请求进入详情页面，如图所示： 
 
可以发现这是一个 GET 请求，请求的参数有 6 个：display、retcode、type、value、containerid 和 page，观察这些请求可以发现只有 page 在变化，...]]></description><category></category></item><item><title><![CDATA[爬取猫眼 TOP100 电影并以 excel 格式存储]]></title><link>https://blog.youkuaiyun.com/Waspvae/article/details/80617357</link><guid>https://blog.youkuaiyun.com/Waspvae/article/details/80617357</guid><author>Waspvae</author><pubDate>Fri, 08 Jun 2018 00:54:00 +0800</pubDate><description><![CDATA[爬取目标

本文将提取猫眼电影 TOP100 排行榜的电影名称、时间、评分、图片等信息，URL 为http://maoyan.com/board/4，提取的结果我们以 excel 格式保存下来。



准备工作

保证电脑安装了 python3.6 和已经安装好了 requests 库、beautifulsoup 库和 openpyxl 库。 
前期安装步骤可以参考：https://germey....]]></description><category></category></item><item><title><![CDATA[【python】通过 for 循环理解迭代器和生成器]]></title><link>https://blog.youkuaiyun.com/Waspvae/article/details/80603234</link><guid>https://blog.youkuaiyun.com/Waspvae/article/details/80603234</guid><author>Waspvae</author><pubDate>Thu, 07 Jun 2018 00:21:02 +0800</pubDate><description><![CDATA[迭代器



可迭代对象


  通过 for…in… 循环依次拿到数据进行使用的过程称为遍历，也叫迭代。我们把可以通过 for…in… 语句迭代读取数据的对象称之为可迭代对象。 
  - 通过 isinstance（）可以判断一个对象是否可以迭代




# 判断列表
print(isinstance([], Iterable)


  打印结果为 True 即为可迭代对象。 
  - 自定义一...]]></description><category></category></item><item><title><![CDATA[进程、线程和协程]]></title><link>https://blog.youkuaiyun.com/Waspvae/article/details/80517631</link><guid>https://blog.youkuaiyun.com/Waspvae/article/details/80517631</guid><author>Waspvae</author><pubDate>Wed, 30 May 2018 23:13:36 +0800</pubDate><description><![CDATA[在介绍进程、线程和协程时，先介绍多任务、并发与并行



多任务


什么是多任务 
操作系统能同时运行多个任务（代码），就是多任务
多任务的作用 
更充分利用 CPU
程序运行效率提升
提升用户体验




并发与并行


并发 
当任务数小于或者等于 CPU 核数时，每一个任务都有对应的 CPU 来处理执行，即任务真的是一起执行的
并行 
当任务数大于 CPU 核数时，一个 CPU 需负责多个...]]></description><category></category></item><item><title><![CDATA[【python】property 的详细使用方法]]></title><link>https://blog.youkuaiyun.com/Waspvae/article/details/80513876</link><guid>https://blog.youkuaiyun.com/Waspvae/article/details/80513876</guid><author>Waspvae</author><pubDate>Wed, 30 May 2018 18:06:13 +0800</pubDate><description><![CDATA[property 有两种使用方式


  
  装饰器：在方法上应用装饰器
  类属性: 在类中定义值为 property 对象的类属性
  




装饰器方式

官方帮助文档



property(fget=None, fset=None, fdel=None, doc=None) -&amp;amp;gt; property attribute
Decorators make defining new p...]]></description><category></category></item><item><title><![CDATA[【python】如何自己开发 一个Web服务器]]></title><link>https://blog.youkuaiyun.com/Waspvae/article/details/80504201</link><guid>https://blog.youkuaiyun.com/Waspvae/article/details/80504201</guid><author>Waspvae</author><pubDate>Wed, 30 May 2018 00:59:30 +0800</pubDate><description><![CDATA[
HTTP 请求报文格式：




Host: 127.0.0.1:8888
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gec...]]></description><category></category></item><item><title><![CDATA[一文读懂 with ... as 原理]]></title><link>https://blog.youkuaiyun.com/Waspvae/article/details/80490741</link><guid>https://blog.youkuaiyun.com/Waspvae/article/details/80490741</guid><author>Waspvae</author><pubDate>Tue, 29 May 2018 01:32:30 +0800</pubDate><description><![CDATA[对于文件、数据库连接、socket 等系统资源而言，应用程序打开这些资源并执行完业务逻辑之后，必须做的一件事就是要关闭（断开）该资源。否则会一直占用资源，影响性能。



以向文件写入数据为例



普通版：



f = open('file.txt', 'w')
f.write('waspvae')
f.close()


  这种写法会有一个潜在的问题，如果在调用 write 的过程中出现了...]]></description><category></category></item><item><title><![CDATA[from 和 import 导入的区别]]></title><link>https://blog.youkuaiyun.com/Waspvae/article/details/80474415</link><guid>https://blog.youkuaiyun.com/Waspvae/article/details/80474415</guid><author>Waspvae</author><pubDate>Sun, 27 May 2018 23:52:16 +0800</pubDate><description><![CDATA[from 和 import 导入的区别


import 导入一定能实现变量的全局共享
from 导入不一定能实现变量的全局共享，只有定义的是可变类型才能全局共享，不变类型无法全局共享，类似于全局变量和局部变量
在实际开发中，应该选择使用 from xx import yy 这种精准的导入方式
不推荐使用 from xx import * 这种导入方式
缺点一 ：如果导入的模块变量太多则会占用大量...]]></description><category></category></item><item><title><![CDATA[【python】GIL是什么？]]></title><link>https://blog.youkuaiyun.com/Waspvae/article/details/80459575</link><guid>https://blog.youkuaiyun.com/Waspvae/article/details/80459575</guid><author>Waspvae</author><pubDate>Sat, 26 May 2018 11:16:10 +0800</pubDate><description><![CDATA[GIL:全局解释器锁1. python 的解释器分为 CPython（默认解释器）和 JPython，由于历史原因，在 CPython 上难以移除 GIL2. 每个线程执行是都需要先获取 GIL，保证同一时刻只有一个线程可以执行代码，所以 python 的多线程并不是真正的多线程，不能利用多核的 CPU 资源，但多进程可以利用多核的 CPU 资源。3. 线程释放 GIL：在 IO 操作等可能会引起...]]></description><category></category></item></channel></rss>