現在是多核時代,併發才能實現更高的吞吐量、更快的響應,但也是把雙刃劍。總結如下幾個用法:
這是兩種最常見的多執行緒併發,它們有個天生的缺陷——scalability。乙個機器的效能總是有瓶頸的。兩個場景的邏輯雖然由多個執行緒實現了併發,但是運算量十分有可能是一台機器無法承載的。如果是多程序併發,那麼可以分布式把其部署到其他機器(也可部署在一台機器)。所以多程序併發比多執行緒併發更加scalability。另外採用多程序後,每個程序單執行緒設計,這樣的程式更加simplicity。多程序的其他優點如解耦、模組化、方便除錯、方便重用等就不贅言了。
提到分布式,就要說一下分布式的通訊技術。常用的方式如下:
實現訊息的序列化和反序列化的方式有很多,
常見的有struct、json、protobuff等都有很成功的應用。
我個人傾向於使用輕量級的二進位制序列化,優點是比較透明和高效,一切在掌握之中。
在fflib 中實現了bin_encoder_t 和 bin_decoder_t 輕量級的訊息序列化,幾十行**而已。
python多程序併發
由於python下呼叫linux的shell命令都需要等待返回,所以常常我們設定的多執行緒都達不到效果,因此在呼叫shell命令不需要返回時,使用threading模組並不是最好的方法。python提供了非常好用的多程序包multiprocessing,你只需要定義乙個函式,python會替你完成其...
python併發之多程序
一 multiprocessing模組介紹 python中的多執行緒無法利用多核優勢,如果想要充分地使用多核cpu的資源 os.cpu count 檢視 在python中大部分情況需要使用多程序。python提供了multiprocessing。multiprocessing模組用來開啟子程序,並在...
python併發程式設計 多程序
import os import time from multiprocessing import process def func args,args2 print args,args2 time.sleep 3 print 子程序 os.getpid print 子程序的父程序 os.getpp...