抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

撸一手Jupyter

进程 && 线程

进程:进程是操作系统中执行的一个程序,操作系统以进程为单位分配存储空间,每个进程都有自己的地址空间、数据栈以及其他用于跟踪进程执行的辅助数据,操作系统管理所有进程的执行,为它们合理的分配资源。进程可以通过fork或者wpawn的方式来创建新的进程执行其他任务,不过新的进程有自己独立的内存空间和数据栈,所以必须通过进程间的通信机制(IPC,Inter Process Communication)来实现数据共享,具体的方式包括管道、信号、套接字、共享内存等。

线程:进程的一个执行单元。线程在同一个进程中执行,共享程序的上下文。一个进程中的各个线程与主线程共享同一片数据空间,因而相比与独立的进程,线程间的信息共享和通信更为容易。线程一般是以并发的方式执行的。注意在单核CPU系统中,真正的并发是不可能的,所以新城的执行实际上是这样规划的:每个线程执行一小会,然后让步给其他线程的任务(再次排队等候更多的CPU执行时间)。在整个线程的执行过程中,每个线程执行它自己的特定的任务,在必要时和其他进程进行结果通信。

Python多进程(使用multiprocessing)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from time import time, sleep
from random import randint
from multiprocessing import Process

def my_task(name):
sleep_time = randint(1,10)
sleep(sleep_time)
print("你叫了一声%s,它鸟你用了%d秒" % (name, sleep_time))


def main():
start = time()
process_1 = Process(target=my_task, args=["yeshan", ])
process_2 = Process(target=my_task, args=["foel", ])
# 启动进程
process_1.start()
process_2.start()
# 等待进程执行结束
process_1.join()
process_2.join()
end = time()
print("一共花费了%f秒" % (end-start))


if __name__ == '__main__':
main()

让vscode使用Pipenv工作环境

1、查看Pipenv的位置

1
2
3
4
# 先激活Pipenv环境
pipenv shell
# 获取当前虚拟环境的位置
pipenv --venv

2、打开setting.json配置文件

  • Ctrl+Shift+P,输入settings,选择Open Settings(JSon)

  • 将之前得到的Pipenv环境路径添加进去

    “python.venvPath”: “C:\Users\Algorithm\.virtualenvs”

python装饰器回顾

返回函数

返回函数

python生成器(generator)

  • 生成器是一种使用普通函数语法定义的迭代器
  • 包含yield语句的函数都是生成器,它是一个不断产生值的函数
  • 生成器每次使用yield产生一个值后,函数都将冻结,即在此处停止执行,等待重新被唤醒。被唤醒后从停止的地方开始继续执行

生成器推导(生成器表达式)

*** 使用圆括号()创建一个生成器推导 ***,它创建了一个可迭代的对象
使用next()函数可以获得生成器推导的下一个返回值

g = (i**2 for i in range(10))

正则表达式(regular expression,regex,RE)

  • 正则表达式是一种用来简洁表达一组字符串的表达式
  • 正则表达式是一种通用的字符串表达框架
  • 正则表达式是一种针对字符串表达“简洁”和“特征”思想的工具
  • 正则表达式可以用来判断某字符串的特征归属

定向爬虫:仅对输入URL进行爬取,不扩展爬取
中国大学排名2018

信息标记的三种形式

  • XML(eXtensible Markup Language)
  • YAML(YAML Ain’t Markup Language)
  • JSON(JaveScript Object Notation)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import requests
from bs4 import BeautifulSoup #引入BeautifulSoup类

url = "https://python123.io/ws/demo.html"

r = requests.get(url)

print(r.status_code)

print("\n")

#demo = r.text #html格式信息

#soup = BeautifulSoup(demo,"html.parser")#使用html.parser对demo进行html解析
soup = BeautifulSoup(open(r"C:\Users\Administrator\Desktop\beautifulsoup\demo.html"))
print(soup.prettify())

BeautifulSoup官方文档

requests库入门实操

  • 京东商品页面爬取
  • 亚马逊商品页面的爬取
  • 百度/360搜索关键字提交
  • IP地址归属地查询
  • 网络图片的爬取和储存