91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Go在單線程計(jì)算性能上的優(yōu)勢

科技綠洲 ? 來源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-11-02 11:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一文中,我們討論了Go在單線程計(jì)算性能上的優(yōu)勢。

現(xiàn)在,考慮這樣的一種場景:

我們需要從某些網(wǎng)址中同步數(shù)據(jù)并進(jìn)行計(jì)算,保存到本地redis緩存中。

現(xiàn)在,我們可以通過編寫Go Worker的方式,將計(jì)算和保存的過程保存在本地的redis緩存中,然后使用Celery來調(diào)度這些任務(wù)。

問題在于,從這些網(wǎng)址中獲取數(shù)據(jù)的步驟,寫在Go Worker里是否合適?Go進(jìn)行網(wǎng)絡(luò)請求是否比Python更穩(wěn)定、速度更快?今天我們就來簡單地比較一下。

1.同步比較

首先,試試Go語言請求百度,獲得這個(gè)請求和拿到回應(yīng)之間的時(shí)間差:

圖片

結(jié)果如下:

圖片

可以看到,平均耗時(shí)在250ms左右。

然后測試Python的requests模塊請求網(wǎng)站:

圖片

結(jié)果如下:

圖片

平均約220ms,似乎在單個(gè)請求的情況下,Python略勝一籌。

但是單個(gè)請求的比較是沒有意義的,因?yàn)檫@個(gè)差異可以忽略不計(jì)。

重點(diǎn)還是在下面并發(fā)請求的比較上。

2.并發(fā)比較

現(xiàn)在,我們試試用Go語言并發(fā)請求10次百度:

圖片

效果如下:

圖片

平均消耗在300ms左右,和單次請求差不多,速度還是相當(dāng)快的。

接下來試試Python的并發(fā)請求,值得注意的是,這里沒有用requests模板,因?yàn)?requests模塊是同步的 ,這一點(diǎn)一定要注意。

因此在這里需要使用aiohttp進(jìn)行并發(fā)請求:

圖片

測試結(jié)果如下:

圖片

可以看到,平均耗時(shí)在500ms左右,在并發(fā)的時(shí)候,其速度相比于Go略遜一籌。

3.總結(jié)

可以看到,Python在單個(gè)請求的時(shí)候(使用requests模塊)速度比Go稍微快一丟丟,但是這樣的區(qū)別幾乎可以忽略不計(jì)。

在并發(fā)10次請求的情況下,Go平均耗時(shí)300ms,而Python平均耗時(shí)500ms,Go略勝一籌。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 緩存
    +關(guān)注

    關(guān)注

    1

    文章

    248

    瀏覽量

    27764
  • Go
    Go
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    12568
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    392

    瀏覽量

    12191
  • 單線程
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    1875
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux多線程對比單線程優(yōu)勢

    ?!柑岣唔憫?yīng)性」:線程可以使程序更加響應(yīng)用戶輸入或其他事件,避免阻塞。線程相比單線程的優(yōu)點(diǎn):「并發(fā)性」:多線程可以同時(shí)執(zhí)行多個(gè)任務(wù),而單線程
    發(fā)表于 12-01 06:11

    單線程的雙任務(wù)調(diào)度

    STM32是單線程的,通信協(xié)議層和應(yīng)用功能層的耦合性比較低,如果獨(dú)立運(yùn)行,提高效率不少,主要實(shí)現(xiàn)的方法有哪些呢?
    發(fā)表于 01-10 10:15

    單線程SRAM靜態(tài)內(nèi)存使用

    概述本篇只要介紹這么使用STM32CubeMx工具添加RT-Thread操作系統(tǒng)組件,碼代碼的IDE是keil。介紹單線程SRAM靜態(tài)內(nèi)存使用。如果還不知道,這么使用STM32CubeMx工具添加
    發(fā)表于 08-24 06:57

    一種單線程編程思路簡析

    事件驅(qū)動?邏輯控制?基于回調(diào)的事件驅(qū)動或者邏輯控制特點(diǎn)代碼接口實(shí)現(xiàn)用法基于回調(diào)的事件驅(qū)動或者邏輯控制本文提供了一種單線程編程思路,并簡單實(shí)現(xiàn)了該思路。受PLC編程線圈和觸點(diǎn)概念的啟發(fā)。將程序抽象理解
    發(fā)表于 02-16 06:58

    python多線程和多進(jìn)程對比

    時(shí)間:2.0076842308044434秒3. 性能對比成果總結(jié)將結(jié)果匯總一下,制成表格。我們來分析下這個(gè)表格。首先是CPU密集型,多線程以對比單線程,不僅沒有優(yōu)勢,顯然還由于要不斷
    發(fā)表于 03-15 16:42

    線程好還是單線程好?單線程和多線程的區(qū)別 優(yōu)缺點(diǎn)分析

    摘要:如今單線程與多線程已經(jīng)得到普遍運(yùn)用,那么到底多線程好還是單線程好呢?單線程和多線程的區(qū)別又
    發(fā)表于 12-08 09:33 ?8.3w次閱讀

    從I/O的阻塞與非阻塞、I/O處理的單線程與多線程角度探討服務(wù)器模型

    這里探討的服務(wù)器模型主要指的是服務(wù)器端對I/O的處理模型。從不同維度可以有不同的分類,這里從I/O的阻塞與非阻塞、I/O處理的單線程與多線程角度探討服務(wù)器模型。
    的頭像 發(fā)表于 01-08 16:13 ?7755次閱讀

    Intel處理器占據(jù)CPU單線程性能前17位 酷睿i9-9900KS仍穩(wěn)居榜首

    目前,PassMark的CPU單線程性能圖表仍然由Intel芯片主導(dǎo)。AMD的Ryzen 9 PRO 3900前面,總共有17個(gè)Intel處理器占據(jù)了主導(dǎo)地位。
    發(fā)表于 04-09 14:39 ?3248次閱讀
    Intel處理器占據(jù)CPU<b class='flag-5'>單線程</b><b class='flag-5'>性能</b>前17位 酷睿i9-9900KS仍穩(wěn)居榜首

    實(shí)現(xiàn)Java多線程爬蟲的兩點(diǎn)

    我們調(diào)試爬蟲程序的時(shí)候,單線程爬蟲沒什么問題,但是當(dāng)我們在線上環(huán)境使用單線程爬蟲程序去采集網(wǎng)頁時(shí),單線程就暴露出了兩個(gè)致命的問題:
    的頭像 發(fā)表于 05-05 21:25 ?2419次閱讀
    實(shí)現(xiàn)Java多<b class='flag-5'>線程</b>爬蟲的兩點(diǎn)

    這款16核怪物單線程和多線程性能方面均躍居主流處理器榜首

    盡管AMD一段時(shí)間以來一直主流芯片中注入更多的內(nèi)核,但在單線程性能方面,這家芯片制造商的產(chǎn)品還不能與Intel的產(chǎn)品相提并論。如果這些PassMark號碼準(zhǔn)確無誤,那么Zen 3似乎終于可以輕而易舉地獲得AMD的青睞。
    的頭像 發(fā)表于 10-28 15:24 ?2639次閱讀

    單線程也能開發(fā)異步任務(wù)?ACE JS框架到底是如何做到的

    HarmonyOS 2提供了兩種應(yīng)用開發(fā)語言:Java和JS。Java線程性能夠讓多任務(wù)并行,充分利用硬件資源開發(fā)出高性能的應(yīng)用。而JS卻是一個(gè)單線程語言,無法像Java一樣創(chuàng)建新的
    的頭像 發(fā)表于 08-13 17:16 ?2948次閱讀
    <b class='flag-5'>單線程</b>也能開發(fā)異步任務(wù)?ACE JS框架到底是如何做到的

    Redis為何選擇單線程

    Redis為何選擇單線程? Redisv6.0以前,Redis的核心網(wǎng)絡(luò)模型選擇用單線程來實(shí)現(xiàn)。 核心意思就是,對于一個(gè) DB 來說,CPU 通常不會是瓶頸,因?yàn)榇蠖鄶?shù)請求不會是 CPU 密集型
    的頭像 發(fā)表于 10-09 10:59 ?979次閱讀

    單線程是否會引起 fail-fast機(jī)制

    ConcurrentModificationException 異常,產(chǎn)生 fail-fast 事件。 多線程?并發(fā)修改?才會引起 fail-fast 機(jī)制保護(hù)程序?小 B 覺得這個(gè)答案沒有說全,面試官說了單線程
    的頭像 發(fā)表于 10-10 16:31 ?951次閱讀
    <b class='flag-5'>單線程</b>是否會引起 fail-fast機(jī)制

    redis多線程還能保證線程安全嗎

    Redis是一種使用C語言編寫的高性能鍵值存儲系統(tǒng),它是單線程的,因?yàn)槭褂昧硕嗦窂?fù)用的方式來處理并發(fā)請求。這樣的實(shí)現(xiàn)方式帶來了很好的性能,但同時(shí)也引發(fā)了一些線程安全方面的問題。
    的頭像 發(fā)表于 12-05 10:28 ?2718次閱讀

    什么是多核多線程?多核多線程如何提高程序的運(yùn)行效率?

    單線程無法充分利用多核處理器的并行計(jì)算能力。
    的頭像 發(fā)表于 02-20 10:22 ?2672次閱讀