0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Go在单线程计算性能上的优势

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-11-02 11:16 次阅读

一文中,我们讨论了Go在单线程计算性能上的优势。

现在,考虑这样的一种场景:

我们需要从某些网址中同步数据并进行计算,保存到本地redis缓存中。

现在,我们可以通过编写Go Worker的方式,将计算和保存的过程保存在本地的redis缓存中,然后使用Celery来调度这些任务。

问题在于,从这些网址中获取数据的步骤,写在Go Worker里是否合适?Go进行网络请求是否比Python更稳定、速度更快?今天我们就来简单地比较一下。

1.同步比较

首先,试试Go语言请求百度,获得这个请求和拿到回应之间的时间差:

图片

结果如下:

图片

可以看到,平均耗时在250ms左右。

然后测试Python的requests模块请求网站:

图片

结果如下:

图片

平均约220ms,似乎在单个请求的情况下,Python略胜一筹。

但是单个请求的比较是没有意义的,因为这个差异可以忽略不计。

重点还是在下面并发请求的比较上。

2.并发比较

现在,我们试试用Go语言并发请求10次百度:

图片

效果如下:

图片

平均消耗在300ms左右,和单次请求差不多,速度还是相当快的。

接下来试试Python的并发请求,值得注意的是,这里没有用requests模板,因为 requests模块是同步的 ,这一点一定要注意。

因此在这里需要使用aiohttp进行并发请求:

图片

测试结果如下:

图片

可以看到,平均耗时在500ms左右,在并发的时候,其速度相比于Go略逊一筹。

3.总结

可以看到,Python在单个请求的时候(使用requests模块)速度比Go稍微快一丢丢,但是这样的区别几乎可以忽略不计。

在并发10次请求的情况下,Go平均耗时300ms,而Python平均耗时500ms,Go略胜一筹。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 缓存
    +关注

    关注

    1

    文章

    233

    浏览量

    26663
  • Go
    Go
    +关注

    关注

    0

    文章

    43

    浏览量

    12245
  • Redis
    +关注

    关注

    0

    文章

    371

    浏览量

    10869
  • 单线程
    +关注

    关注

    0

    文章

    17

    浏览量

    1771
收藏 人收藏

    评论

    相关推荐

    单线程的双任务调度

    STM32是单线程的,通信协议层和应用功能层的耦合性比较低,如果独立运行,提高效率不少,主要实现的方法有哪些呢?
    发表于 01-10 10:15

    单线程SRAM静态内存使用

    概述本篇只要介绍这么使用STM32CubeMx工具添加RT-Thread操作系统组件,码代码的IDE是keil。介绍单线程SRAM静态内存使用。如果还不知道,这么使用STM32CubeMx工具添加
    发表于 08-24 06:57

    一种单线程编程思路简析

    事件驱动?逻辑控制?基于回调的事件驱动或者逻辑控制特点代码接口实现用法基于回调的事件驱动或者逻辑控制本文提供了一种单线程编程思路,并简单实现了该思路。受PLC编程线圈和触点概念的启发。将程序抽象理解
    发表于 02-16 06:58

    python多线程和多进程对比

    时间:2.0076842308044434秒3. 性能对比成果总结将结果汇总一下,制成表格。我们来分析下这个表格。首先是CPU密集型,多线程以对比单线程,不仅没有优势,显然还由于要不断
    发表于 03-15 16:42

    线程好还是单线程好?单线程和多线程的区别 优缺点分析

    摘要:如今单线程与多线程已经得到普遍运用,那么到底多线程好还是单线程好呢?单线程和多线程的区别又
    发表于 12-08 09:33 8.1w次阅读

    从I/O的阻塞与非阻塞、I/O处理的单线程与多线程角度探讨服务器模型

    这里探讨的服务器模型主要指的是服务器端对I/O的处理模型。从不同维度可以有不同的分类,这里从I/O的阻塞与非阻塞、I/O处理的单线程与多线程角度探讨服务器模型。
    的头像 发表于 01-08 16:13 6986次阅读

    Intel处理器占据CPU单线程性能前17位 酷睿i9-9900KS仍稳居榜首

    目前,PassMark的CPU单线程性能图表仍然由Intel芯片主导。AMD的Ryzen 9 PRO 3900前面,总共有17个Intel处理器占据了主导地位。
    发表于 04-09 14:39 2730次阅读
    Intel处理器占据CPU<b class='flag-5'>单线程</b><b class='flag-5'>性能</b>前17位 酷睿i9-9900KS仍稳居榜首

    实现Java多线程爬虫的两点

    我们调试爬虫程序的时候,单线程爬虫没什么问题,但是当我们在线上环境使用单线程爬虫程序去采集网页时,单线程就暴露出了两个致命的问题:
    的头像 发表于 05-05 21:25 1950次阅读
    实现Java多<b class='flag-5'>线程</b>爬虫的两点

    这款16核怪物单线程和多线程性能方面均跃居主流处理器榜首

    尽管AMD一段时间以来一直主流芯片中注入更多的内核,但在单线程性能方面,这家芯片制造商的产品还不能与Intel的产品相提并论。如果这些PassMark号码准确无误,那么Zen 3似乎终于可以轻而易举地获得AMD的青睐。
    的头像 发表于 10-28 15:24 2086次阅读

    单线程也能开发异步任务?ACE JS框架到底是如何做到的

    HarmonyOS 2提供了两种应用开发语言:Java和JS。Java线程性能够让多任务并行,充分利用硬件资源开发出高性能的应用。而JS却是一个单线程语言,无法像Java一样创建新的
    的头像 发表于 08-13 17:16 2019次阅读
    <b class='flag-5'>单线程</b>也能开发异步任务?ACE JS框架到底是如何做到的

    Redis为何选择单线程

    Redis为何选择单线程Redisv6.0以前,Redis的核心网络模型选择用单线程来实现。 核心意思就是,对于一个 DB 来说,CPU 通常不会是瓶颈,因为大多数请求不会是 CPU 密集型
    的头像 发表于 10-09 10:59 369次阅读

    单线程是否会引起 fail-fast机制

    ConcurrentModificationException 异常,产生 fail-fast 事件。 多线程?并发修改?才会引起 fail-fast 机制保护程序?小 B 觉得这个答案没有说全,面试官说了单线程
    的头像 发表于 10-10 16:31 394次阅读
    <b class='flag-5'>单线程</b>是否会引起 fail-fast机制

    redis多线程还能保证线程安全吗

    Redis是一种使用C语言编写的高性能键值存储系统,它是单线程的,因为使用了多路复用的方式来处理并发请求。这样的实现方式带来了很好的性能,但同时也引发了一些线程安全方面的问题。
    的头像 发表于 12-05 10:28 1764次阅读

    什么是多核多线程?多核多线程如何提高程序的运行效率?

    单线程无法充分利用多核处理器的并行计算能力。
    的头像 发表于 02-20 10:22 1317次阅读

    Linux性能基准测试工具选择与测试策略

    Super_Pi 是一种用于计算圆周率π的程序,通常用于测试计算性能和稳定性。它的主要用途是测量系统的单线程性能,因为它是一个
    发表于 04-26 16:24 380次阅读
    Linux<b class='flag-5'>性能</b>基准测试工具选择与测试策略