网站开发项目中的rd,企查查企业信息查询在线查询,用html做音乐网站,网站用户注册页面怎么做文章目录 1 概述1.1 进程 VS 线程1.2 优缺点 2 进程2.1 三个步骤2.2 多进程2.3 带参数2.3.1 元组参数 args2.3.2 字典参数 kwargs 2.4 获取进程编号2.5 设置进程守护 3 线程3.1 三个步骤3.2 多线程3.3 带参数2.3.1 元组参数 args2.3.2 字典参数 kwargs 2.4 获取线程编号2.5 设置… 文章目录 1 概述1.1 进程 VS 线程1.2 优缺点 2 进程2.1 三个步骤2.2 多进程2.3 带参数2.3.1 元组参数 args2.3.2 字典参数 kwargs 2.4 获取进程编号2.5 设置进程守护 3 线程3.1 三个步骤3.2 多线程3.3 带参数2.3.1 元组参数 args2.3.2 字典参数 kwargs 2.4 获取线程编号2.5 设置线程守护 1 概述
1.1 进程 VS 线程 #mermaid-svg-hjnbozuL2qYkEYXY {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hjnbozuL2qYkEYXY .error-icon{fill:#552222;}#mermaid-svg-hjnbozuL2qYkEYXY .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-hjnbozuL2qYkEYXY .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-hjnbozuL2qYkEYXY .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-hjnbozuL2qYkEYXY .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-hjnbozuL2qYkEYXY .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-hjnbozuL2qYkEYXY .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-hjnbozuL2qYkEYXY .marker{fill:#333333;stroke:#333333;}#mermaid-svg-hjnbozuL2qYkEYXY .marker.cross{stroke:#333333;}#mermaid-svg-hjnbozuL2qYkEYXY svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-hjnbozuL2qYkEYXY .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-hjnbozuL2qYkEYXY .cluster-label text{fill:#333;}#mermaid-svg-hjnbozuL2qYkEYXY .cluster-label span{color:#333;}#mermaid-svg-hjnbozuL2qYkEYXY .label text,#mermaid-svg-hjnbozuL2qYkEYXY span{fill:#333;color:#333;}#mermaid-svg-hjnbozuL2qYkEYXY .node rect,#mermaid-svg-hjnbozuL2qYkEYXY .node circle,#mermaid-svg-hjnbozuL2qYkEYXY .node ellipse,#mermaid-svg-hjnbozuL2qYkEYXY .node polygon,#mermaid-svg-hjnbozuL2qYkEYXY .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-hjnbozuL2qYkEYXY .node .label{text-align:center;}#mermaid-svg-hjnbozuL2qYkEYXY .node.clickable{cursor:pointer;}#mermaid-svg-hjnbozuL2qYkEYXY .arrowheadPath{fill:#333333;}#mermaid-svg-hjnbozuL2qYkEYXY .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-hjnbozuL2qYkEYXY .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-hjnbozuL2qYkEYXY .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-hjnbozuL2qYkEYXY .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-hjnbozuL2qYkEYXY .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-hjnbozuL2qYkEYXY .cluster text{fill:#333;}#mermaid-svg-hjnbozuL2qYkEYXY .cluster span{color:#333;}#mermaid-svg-hjnbozuL2qYkEYXY div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-hjnbozuL2qYkEYXY :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 进程 线程 1 线程 2 线程 N 举例说明 进程QQ.exe 线程支撑 QQ.exe 运行的各个程序 1.2 优缺点
优点缺点进程可用多核 CPU资源开销大线程资源开销小只能单核 CPU
2 进程
2.1 三个步骤
# 1.导入进程包
import ultiprocessing# 2.通过进程类创建进程对象参数名有
# target: 执行的目标任务名函数名、方法名
# name : 进程名一般不用设置
# group : 进程组一般不用设置
进程对象 ultiprocessing.Process(target任务名)# 3.启动进程
进程对象.start()2.2 多进程
import multiprocessing
import time# 唱歌
def sing():for i in range(3):print(唱歌...)time.sleep(1)# 跳舞
def dance():for i in range(3):print(跳舞...)time.sleep(1)if __name__ __main__:sing_process multiprocessing.Process(targetsing)dance_process multiprocessing.Process(targetdance)sing_process.start()dance_process.start()2.3 带参数
参数描述元组 args参数有顺序要求字典 kwargs参数无顺序要求
import multiprocessing
import time# 唱歌
def sing(num):for i in range(num):print(唱歌...)time.sleep(1)# 跳舞
def dance(num):for i in range(num):print(跳舞...)time.sleep(1)if __name__ __main__:sing_process multiprocessing.Process(targetsing, args(3,))dance_process multiprocessing.Process(targetdance, kwargs{num: 3})sing_process.start()dance_process.start()2.3.1 元组参数 args
sing_process multiprocessing.Process(targetsing, args(3,))
sing_process.start()2.3.2 字典参数 kwargs
sing_process multiprocessing.Process(targetdance, kwargs{num: 3})
sing_process.start()2.4 获取进程编号
import osprint(os.getpid()) # 当前进程ID
print(os.getppid()) # 当前进程的父ID2.5 设置进程守护
import multiprocessing
import time# 工作
def work():for i in range(10):print(工作中...)time.sleep(0.5)if __name__ __main__:work_process multiprocessing.Process(targetwork)# 设置守护进程work_process.daemon Truework_process.start()time.sleep(1)print(主进程执行已完成)设置守护进程的前后对比图
3 线程
3.1 三个步骤
# 1.导入线程模块
import threading# 2.通过线程类创建线程对象参数名有
# target: 执行的目标任务名函数名、方法名
# name : 线程名一般不用设置
# group : 线程组一般不用设置
线程对象 threading.Thread(target任务名)# 3.启动线程执行任务
线程对象.start()3.2 多线程
import threading
import time# 唱歌
def sing():for i in range(3):print(唱歌...)time.sleep(1)# 跳舞
def dance():for i in range(3):print(跳舞...)time.sleep(1)if __name__ __main__:sing_process threading.Thread(targetsing)dance_process threading.Thread(targetdance)sing_process.start()dance_process.start()3.3 带参数
同进程
import threading
import time# 唱歌
def sing(num):for i in range(num):print(唱歌...)time.sleep(1)# 跳舞
def dance(num):for i in range(num):print(跳舞...)time.sleep(1)if __name__ __main__:sing_process threading.Thread(targetsing, args(3,))dance_process threading.Thread(targetdance, kwargs{num: 3})sing_process.start()dance_process.start()2.3.1 元组参数 args
sing_process multiprocessing.Thread(targetsing, args(3,))
sing_process.start()2.3.2 字典参数 kwargs
sing_process multiprocessing.Thread(targetdance, kwargs{num: 3})
sing_process.start()2.4 获取线程编号
import threadingdef work():print(f线程ID为: {threading.current_thread().ident})if __name__ __main__:work_thread threading.Thread(targetwork)work_thread.start()2.5 设置线程守护
同 进程
import threading
import time# 工作
def work():for i in range(10):print(工作中...)time.sleep(0.5)if __name__ __main__:work_thread threading.Thread(targetwork)# 设置守护线程work_thread.setDaemon(True)work_thread.start()time.sleep(1)print(主进程执行已完成)