python乙個執行緒:
def
decrement
(n):
while n > 0:
n -= 1
from time import perf_counter as pc
start = pc()
decrement(100000000)
print(pc() - start)
14.351082861999998
14.311808035000013
13.47257553399993
python兩個執行緒:
import threading
t1 = threading.thread(target=decrement, args=(50000000,))
t2 = threading.thread(target=decrement, args=(50000000,))
start = pc()
t1.start()
t2.start()
t1.join()
t2.join()
print(pc() - start)
40.047668924999925
17.143103717999793
36.23898320300009
49.22135359899994
34.21361186399986
go乙個執行緒:
package main
import
"fmt"
import
"time"
var c chan
intfunc decrement(n int)
}func main()
434.60565ms
425.799923ms
421.821211ms
459.630486ms
go兩個執行緒:
package main
import
"fmt"
import
"time"
var c chan
intfunc decrement(n int)
c <-0
}func main()
51.382195ms
61.355949ms
42.02437ms
53.019678ms
38.299514ms
結論
實驗環境是同一臺虛擬機器,python3.6.5,go1.10。
python執行結果不穩定,雙線程比單執行緒還慢,時間大約是一倍。
go執行結果穩定,雙線程比單執行緒快大約10倍。
go比python單執行緒快n倍。
seastar與go的http效能差異
golang的coroutine好用,但是coroutine本身切換是需要有代價的,主要體現在記憶體棧的上下文切換。之前看過乙個c 的go風格的庫,叫libgo,根據其github主頁的benchmark,協程切換速率是要優於go的。但是這篇文章並非要和libgo比較,由於筆者之前接觸過scylla...
python與執行緒
同步概念 協同步調,按預定的先後次序執行 併發 不同時執行 執行緒 並行 同時執行 程序 同步原語 1.互斥鎖,2.訊號量原語,3.queue佇列 上下文管理器 with 死鎖 1.通過銀行家演算法解決,2.新增超時時間 模組 threading.thread 執行緒池 建立執行緒需要經過啟動 銷毀...
Python 多執行緒簡單案例 執行緒同步
codeing utf 8 import time import threading 執行緒同步 class mythead threading.thread def init self,name,delay threading.thread.init self self.name name sel...