线程线程是一个任务,通过多个工人去完成。任务是一个任务,但是执行任务的人更多,从而提升任务执行时间。案例:Python 爬虫,爬取漫画网站,或者是爬取下载电影,任务是下载当前页面的所有电影资源,如果单线程的...

线程
线程是一个任务,通过多个工人去完成。任务是一个任务,但是执行任务的人更多,从而提升任务执行时间。
案例:Python 爬虫,爬取漫画网站,或者是爬取下载电影,任务是下载当前页面的所有电影资源,如果单线程的话,需要挨个下载。伪代码如下:
# 耗时 len(URLs)*单次下载平均时间
for URL in URLs: download(URL) save()
如果多线程的话,耗时就远远小于总耗时时间。
进程
而每个进程,代表一个任务,然后我需要完成相同的这种任务,就开启多个进程。
案例:笔者打算写一个设备的模拟器程序,使用 Modbus TCP 协议开发,一个进程扮演一个 Slave (从机)角色,当设备设置好监听端口后,它会不断的接收发送来自于 Master (主机)的通信请求,并作出响应。
Demo
1. 线程演示程序
# 采用传参方式
import time,threading def demo(n,id): while n >= 0: print('id:',id,'n:',n) n -= 1 time.sleep(1) def main(): t1 = threading.Thread(target=demo,args=(10,1)) t2 = threading.Thread(target=demo,args=(10,2)) t1.start() t2.start() t1.join() t2.join() print('exit') if __name__ == '__main__': main()
2. 构造类
import time,threading class A(threading.Thread): def __init__(self, p1,p2): threading.Thread.__init__(self) self.p1 = p1 self.p2 = p2 def run(self): n,i = self.p1,self.p2 demo(n,i) def demo(n,id): while n >= 0: print('id:',id,'n:',n) n -= 1 time.sleep(1) def main(): t1 = A(10,1) t2 = A(10,2) t1.start() t2.start() t1.join() t2.join() print('exit') if __name__ == '__main__': main()
沃梦达教程
本文标题为:Python 线程与进程


基础教程推荐
猜你喜欢
- 四步教你学会打包一个新的Python模块 2022-10-20
- ubuntu 18 python3.6 的安装与 python2的版本切换 2023-09-03
- 基于Python实现股票数据分析的可视化 2023-08-04
- Python爬取当网书籍数据并数据可视化展示 2023-08-11
- Python 中 Elias Delta 编码详情 2023-08-08
- python的环境conda简介 2022-10-20
- Centos7下安装python环境 2023-09-04
- Python基础学习之函数和代码复用详解 2022-09-02
- CentOS 7.5 安装 Python3.7 2023-09-03
- centos系统 anaconda3(python3)安装pygrib 2023-09-04