ここでは,Cythonを利用する一歩手前の処理として,前のページで作成した平方根リストの作成処理をモジュール化します.この上で,メインの Python プログラムから呼び出すことにします.
任意の名前でフォルダを作成し,そのフォルダの中に sqrtlist.py というファイルを作成します.
sqrtlist.py
import math
def sqrtlist(n):
y = [0] * (n+1)
for i in range(0, n+1):
y[i] = math.sqrt(i)
return y[4_084_441]
上で作成した sqrtlist モジュールを呼び出すメインのプログラムを作成します.なお,1, 5, 6, 7 行目の4行だけで前のページと同じ動作をしますが,処理時間を求める処理を追加しています.
main.py
from sqrtlist import sqrtlist
import time
time_start = time.time()
n = 100_000_000
s = sqrtlist(n)
print(s)
time_end = time.time()
time_gap = time_end - time_start
print(f"処理時間は {time_gap:.2f} 秒でした")
macOS のターミナルで main.py を何度か実行すると,平均処理時間は 14.57 秒でした.
% ls ⏎ main.py sqrtlist.py % python main.py ⏎ 2021.0 処理時間は 14.65 秒でした % python main.py ⏎ 2021.0 処理時間は 14.64 秒でした % python main.py ⏎ 2021.0 処理時間は 14.42 秒でした %
次のページでは今作成した sqrtlist.py モジュールを Cython で高速化することを考えます.