ccxt非同期アクセス時間についての検証

zaifさんから1 tickerと4 tickersの取得を例に検証してみる

# -*- coding: utf-8 -*-
import asyncio, os, sys
from time import time

root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
sys.path.append(root + '/python')
sys.path.append('/usr/local/lib/python3.6/site-packages/ccxt')
import ccxt.async_support as ccxt

PAIRS = ['BTC/JPY', 'BCH/JPY', 'XEM/JPY', 'MONA/JPY']

async def test(exchange, pair):
    print(await exchange.fetch_ticker(pair))
    if pair == 'MONA/JPY': await exchange.close()

def main():
    zaif = ccxt.zaif({
        'apiKey': "",
        'secret': "",
        'verbose': True,
    })
    start_time = time()
    asyncio.get_event_loop().run_until_complete(test(zaif, 'BTC/JPY'))
    mid_time = time()
    [asyncio.get_event_loop().run_until_complete(test(zaif, pair)) for pair in PAIRS]
    print(f"[info]downloaded time of 1 pair :{mid_time-start_time}s")
    print(f"[info]downloaded time of 4 pairs:{time()-mid_time}s")

if __name__ == '__main__':
    main()

検証結果

4tickersと1tickerの時間はあまり変わってないので、非同期の動きが検証できたと思われる

[info]downloaded time of 1 pair :0.13094758987426758s
[info]downloaded time of 4 pairs:0.13180255889892578s

検証環境

ubuntu 14.04
python 3.6.3
cctx 1.16.11

研究開発・検証試作に提案するロボット翔・電子部品ストアロボット、センサ、通信モジュールが品揃えています。どうぞご利用下さい

Python3再帰動作検証~決定木まで

Pythonバージョン確認

C:\recurse>py -V
Python 3.6.5

再帰動作検証その1

自然数1~5の足し算

# file_name: recurse.py
def recurse_add(n):
    if n==1:
        return 1
    return n + recurse_add(n - 1)
if __name__ == '__main__':
    recurse_add(5)

Stackの様子を見てみよう、下から上の順にPush、逆のほうからPop(LIFO)

recurse_add(1)
2+recurse_add(1)
3+recurse_add(2)
4+recurse_add(3)
5+recurse_add(4)

再帰動作検証その2

フォルダーc:/recurse/直下のサブフォルダー、ファイル名を階層で表示

Pythonコード

# file_name: recurse.py
import os
FOLDER = "c:/recurse/"
def main():
    counter_recurse = 0 # 再帰counter初期化
    print_files(FOLDER, counter_recurse) # folderとsub_folerのfilesをプリントする
def print_files(folder, counter_recurse): # 再帰関数の入り口
    for f in os.listdir(folder):
        full_name = folder + f # PATHつきfile名 または folder名
        if os.path.isdir(full_name): # folderの場合
            # folder名プリント
            print(" " * 5 * counter_recurse + f + ", counter_recurse =" , counter_recurse)
            counter_recurse = counter_recurse + 1 # folder名プリント
            print_files(full_name + "/", counter_recurse) # 再帰、スタックにプッシュ、LIFOでポップ
            counter_recurse = 0 # 再帰counterリセット、再帰毎終了時に実行
        elif os.path.isfile(full_name): # fileの場合
            print(" " * 5 * counter_recurse + f) # file名プリント
if __name__ == '__main__':
    main()

確認

C:\recurse>py recurse.py
file_in_recurse.txt
folder1, counter_recurse = 0
     folder2, counter_recurse = 1
          folder3, counter_recurse = 2
               folder4, counter_recurse = 3
                    file_in_folder4.txt
folder5, counter_recurse = 0
     folder6, counter_recurse = 1
          folder7, counter_recurse = 2
               file_in_folder7.txt
recurse.py

決定木の再帰

coming soon
以上

研究開発・検証試作に提案するロボット翔・電子部品ストアロボット、センサ、通信モジュールが品揃えています。どうぞご利用下さい

Raspberry Pi B+にPython 3.5.1インストール

1、DebianとPythonの既存バージョン確認

# cat /etc/debian_version
Debian 7.6
# python -V
Python 2.7.3

2、ベースのアップグレード、約2時間かかりました。

# apt-get update
# apt-get upgrade -y</code>
# apt-get dist-upgrade</code>
# apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev zlib1g-dev libsqlite3-dev tk-dev libssl-dev openssl libbz2-dev libreadline-dev

3、pyenvのインストール

# git clone https://github.com/yyuu/pyenv.git ~/.pyenv
# echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
# echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
# echo 'eval "$(pyenv init -)"' >> ~/.profile
# source ~/.profile

4、Python 3.5.1のインストール、約1時間かかりました。

# pyenv install 3.5.1

5、Python 3.5.1へ切り替え、旧バージョンもそのまま

# python -V
Python 2.7.3
# pyenv globle 3.5.1
# Python -V
Python 3.5.1

以上。

 

 

研究開発・検証試作に提案するロボット翔・電子部品ストアロボット、センサ、通信モジュールが品揃えています。どうぞご利用下さい