学习网站
https://www.bilibili.com/video/BV1RM4y1u7Bj?p=4&spm_id_from=pageDriver
此系列是在学习 “python3网络爬虫开发实战从入门到精通 北航硕士崔庆才经典52讲” 所做的笔记
带#为重点内容
多线程的含义
进程
能同时做到运行这么多任务是因为 任务对应着线程的执行。进程是线程的集合,是由一个或多个线程构成的。线程是操作系统进行运算调度的最小单位,是进程中的一个最小运行单元。
多线程
多线程就是一个进程中同时执行多个线程。
并发和并行
多线程适用场景
在一个程序进程中,有些操作是比较耗时或者需要等待的
如:
- 等待数据库的查询结果的返回
- 等待网页结果的响应
Python 实现多线程
在 Python 中,实现多线程的模块叫作 threading , 是 Python 自带的模块。
import threading
import time
def target(second):
print(f'Threading {threading.current_thread().name}is running')
print(f'Threading {threading.current_thread().name}sleep{second} s')
time.sleep(second)
print(f'Threading{threading.current_thread().name}is ended')
print(f'Threading {threading.current_thread().name}is running')
for i in[1,5]:
t = threading.Thread(target=target,args=[i])
t.start()
print(f'Threading{threading.current_thread().name}is ended')
emm 太复杂了
见其他学习文章 学习多线程的实现
Python 多线程的问题
多进程的含义
多进程的实现
import multiprocessing
def process(index):
print(f'Process:{index}')
if __name__ == '__main__':
for i in range(5):
p = multiprocessing.Process(target=process,args=(i,))
p.start()
运行结果
import multiprocessing
import time
def process(index):
time.sleep(index)
print(f'Process:{index}')
if __name__ == '__main__':
for i in range(5):
p = multiprocessing.Process(target=process,args=[i])
p.start()
print(f'Cpu number:{multiprocessing.cpu_count()}')
for p in multiprocessing.active_children():
print(f'Child process name:{p.name}id:{p.pid}')
print('Process Ended')
父进程等待子进程进行完之后在进行
进程互斥锁
信号量
队列
管道
进程池