线程和协程的处理数据区别

多线程是可以并行处理数据的。
比如我开了4个线程,每个线程申请一个内存,我把它写入到某个指针(地址空间)去。这时候cpu多核就展现出来,可以同时写入数据。只是大部分情况下一般程序开发者用不了那么精度的计算,所以成就了协程。

那么我们说说协程。
协程理论上只是并发处理数据,而不是并行处理数据。并发的意思一个线程下,单核内,它一个个执行任务,遇到阻塞情况下会去执行未被阻塞的代码。当代码不阻塞了它又回来继续执行,协程是无法利用多核cpu去处理数据。

所以线程和协程哪个快?
这个要根据使用场景,它们各有各的的优势。
在多核电脑的情况下,想完整使用电脑性能。又不想占用太大资源。那么多线程+协程效率最佳。

Python程序员的话使用多进程+协程就行。

为什么会造成协程比多线程快的原因?
现在网上很多人拿多线程和多协程比较,认为协程运行速度比线程快。

一个单核cpu同一时间只能处理一个线程,4核cpu则可以同时处理4个线程,当我4核cpu开了500个线程的时候,这时候cpu则会根据情况给个特定时间运行一段线程后执行下个线程,但是cpu在切换的时候会有资源开销,这个时候会产生一段比较长”延时”。

协程是一个线程的最小单位,它在线程里执行代码切换资源时,消耗的资源比较少,协程”延时”对比线程”延时”没那么明显。所以执行效率高很多。

协程只是单核cpu单线程情况下效率优化到最佳。
如果多线程+协程方式则可以把多核cpu优化到最佳,最快,最省系统资源。

所以Python是多线程吗?不是,Python的多线程实际就是多协程。

Python当个辅助工具还真是挺好使,方便,开发效率高的同时也舍弃了很多东西。但是确实不适合用来比速度。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
进程是操作系统资源分配和独立运行的最小单位,而线程是任务调度和系统执行的最小单位。每个进程都有独立的地址空间,一个进程崩溃不会影响其他进程;而一个进程中的多个线程共享该进程的地址空间,一个线程的非法操作会导致整个进程崩溃。此外,进程之间的上下文切换开销较大,因为每个进程有独立的代码和数据空间,而线程组共享代码和数据空间,因此线程之间的切换开销较小。 进程由共享空间和一个或多个线程组成,线程之间共享进程的内存空间。一个标准的线程线程ID、程序计数器PC、寄存器和栈组成。 进程与线程的选择取决于具体的应用需求。进程具有独立的功能,适合用于执行复杂的任务,而线程可以实现任务的并行处理和资源共享。协程是一种用户态的轻量级线程,其调度完全由用户控制,适用于需要高效的协作和协调的场景。 进程、线程协程区别总结如下: - 进程是操作系统资源分配和独立运行的最小单位,线程是任务调度和系统执行的最小单位,协程是一种用户态的轻量级线程。 - 进程拥有独立的地址空间,线程共享进程的地址空间,一个进程崩溃不会影响其他进程,但一个线程的非法操作会导致整个进程崩溃。 - 进程之间的上下文切换开销较大,线程之间的切换开销较小。 - 进程适用于执行复杂的任务,线程适用于任务的并行处理和资源共享,协程适用于高效的协作和协调。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hisen(斜飞)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值