SamSuka
Ernie.QT
Ernie.QT

patreon


Python Concurrency (Part 1)

呢篇文target一啲advance少少嘅讀者,如果大家已經開始用Python上手backtest,可能會令大家知道點樣improve唔同嘅範疇。

大部分algo trading嘅task其實離唔開兩樣嘢,一個就係運算,另一個係request等data返,呢度可以係交易所落盤定係第三方API數據。前者關CPU (Central Processing Unit),後者就關I/O (Input/Output operation)。下面就會講深入啲。

I/O-bound & CPU-bound

Python: Process & Thread

前面提到大家遇到唔同task有機會受限制,CPU-bound或者I/O-bound。呢度就係講深少少,喺Python嘅層面上可以點樣減輕佢嘅限制。以下呢兩個terms會好容易混淆,而且以我理解應該係Python獨有咁樣去分,亦都係源自於本身Python嘅設計。

以前去學佢哋嘅分別嘅時候,記得讀一篇文去理解佢哋係啲咩,Process就好似一間工廠咁而Thread就好似入邊嘅工人咁。咁我哋回歸返點樣去解決CPU-bound同I/O-bound嘅問題,個解決方案就係multi-processing同multi-threading。而初學者最常寫嘅代碼其實係single process single thread,單進程單線程去行代碼。

Python Multi-processing & Multi-threading

如果大家想知Python入邊點樣用到Multi-processing & Multi-threading,呢度有代碼例子,大家參考完之後可以試吓應用喺自己啲code度。首先分清楚啲pass究竟係受邊一類型限制,再去睇究竟用邊個去解決。

Comments

速度限制定係額度限制? 前者可以解決,後者唔可以用同一個IP multi thread解決。 前者如果係request一次本身都好慢,咁就係人哋server事,你自己解決唔到。

Ernie

想問如果想係同一個data source 到拎唔同data (e.g. glassnode), 但係佢本身api 有速度限制,係咪就唔可以用mutli-thearding 嘅方法去同時提取唔同數據?thanks Ernie!

Cyrus Chan


More Creators