网站上的格式用html怎么做,wordpress数据库软件,wordpress如何安裝,艺人百度指数排行榜在知道和使用多进程和多线程之前 需要知道#xff0c;进程是什么线程是什么#xff1f;
进程#xff1a;是计算机中正在运行的程序的实例。它是操作系统调度和管理的基本单位#xff0c;包含程序代码、数据和执行状态等信息。*每个进程都有自己的内存空间和资源#xff0…在知道和使用多进程和多线程之前 需要知道进程是什么线程是什么
进程是计算机中正在运行的程序的实例。它是操作系统调度和管理的基本单位包含程序代码、数据和执行状态等信息。*每个进程都有自己的内存空间和资源可以与其他进程进行通信。
线程Thread是程序执行流的最小单元是程序执行过程中的一个子任务一个进程可以包含多个线程。线程拥有自己的程序计数器、栈、局部变量和状态但是它们共享同一进程的全局变量、文件和系统资源。 一、多进程是指在一个操作系统中同时运行多个独立的进程。每个进程都有自己的地址空间、代码、数据和栈等资源并且独立地运行在CPU上。多进程可以提高系统的吞吐量和响应时间因为不同的进程可以同时运行互不影响。
多进程的使用场景这个是重点计算密集型即cpu密集型用到很多计算数据的操作可以使用多进程譬如要计算数据库中很多数据的加减乘除的值。
1、简单的例子 multiprocessing模块提供了一个Process类可以方便地创建和管理子进程。
import multiprocessingdef worker(num):子进程要执行的任务print(Worker %s is running... % num)if __name__ __main__:# 创建两个子进程p1 multiprocessing.Process(targetworker, args(1,))p2 multiprocessing.Process(targetworker, args(2,))# 启动子进程p1.start()p2.start()# 等待子进程执行完成p1.join()p2.join()print(All workers finished.)# 输出结果# Worker 1 is running...# Worker 2 is running...# All workers finished.
2、实际使用的例子
import multiprocessing# 用于计算的函数
def test(a, b):print(a * b)return a * b# 主函数
def main():processes []for i in range(10):p multiprocessing.Process(targettest, args(i, i1))# 启动子进程p.start()# 将循环的子进程放入列表用于后面的等待退出processes.append(p)for i in processes:i.join()
if __name__ __main__:main()二、多线程是指在一个进程内同时执行多个线程的技术。一个进程由一个或多个线程组成每个线程拥有独立的执行流程可以同时执行不同的任务提高处理器的利用率和系统的响应能力。多线程常用于并行处理、异步编程、提高程序运行效率等方面。
多线程的使用场景这个是重点I/O密集型即input和output的缩写例如磁盘内存的读写都是多线程可以使用的地方。
1、简单的例子 threading模块提供了一个Thread类可以方便地创建和管理子线程。
import threadingdef fibonacci(n):if n 1:return nelse:return (fibonacci(n-1) fibonacci(n-2))if __name__ __main__:threads []for i in range(10):t threading.Thread(targetfibonacci, args(35,))threads.append(t)for t in threads:t.start()for t in threads:t.join()
2、实际使用的例子
import threadingdef test(a):# 譬如去服务器读取文件是否存在检查该名称是否符合规范注这个文件会很多至少是上万的print(f一个假的线程任务{a})return adef add_process():threads []for i in range(10):p threading.Thread(targettest, args(i,))# 启动子进程p.start()# 将循环的子进程放入列表用于后面的等待退出threads.append(p)for i in threads:i.join()
if __name__ __main__:add_process()
后续有线程池和进程池欢迎大家参考。