python 多进程 多线程 嵌套,多线程多进程以及python中的实现

本文详细介绍了Python中多进程和多线程的实现方式,包括使用multiprocessing和threading模块创建进程和线程,以及如何进行进程间通信。文中还提到了Python的GIL限制,并建议计算密集型任务使用多进程,I/O密集型任务使用多线程。同时,文章警告了Linux环境下并行嵌套的限制,并提供了qutip库的并行计算示例。
摘要由CSDN通过智能技术生成

多线程和多进程

通常在硬件层面上和操作系统层面上都存在线程的概念。但是这两个概念是完全不同的,是一个词汇在不同层面上的不同意思。

CPU数,核心数,硬件的线程数

CPU数指的是一个计算机主板上实际上卡槽中插入的CPU个数,由卡槽socket决定。一般的计算机是一个卡槽,因为多个卡槽的CPU之间共享内存等资源需要高级的技术。一般服务器是多个物理CPU的,也就是CUP数对于个人计算机是1,对于服务器是>1.

核心数指的是单个CPU的内部存在的可以同时处理的处理器。

这里首先强调是这里的核心是CPU内部存在一定的硬件支持的

第二是这里的同时指的是真正的同时处理,不同于操作系统层面上的同时可以是单个核心不断切换导致的同时。

线程数thread,逻辑处理器logical processor,或者虚拟核心virtual core,是同一个东西,指的是一个核心中可以存在着SMT(simultaneous multithreading)或者HT(hyper-threading)技术,这些技术可以使得单个核心同时执行多个线程,就相当于上文提到的单个核心数内部又存在多个子核心,总的核心是这些子核心数之和。

所以系统总的核心数实际上是上面所有的乘积。也就是逻辑处理器数量= CPU数* 核心数 * 超线程数(SMT or HT) 。

最后在硬件层面上其实线程和进程是一样的,指的就是几个核心或者存在超线程时候的总的线程数。

Linux查看以上信息的命令,lscpu或者到/proc/cpuinfo查看。

Windows可以直接看任务管理器。

操作系统层面的进程和线程

操作系统层面上(不严格讲)

一个线程指的是一串又有逻辑的指令&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值