Python3.12の新機能 Untitled

PEP 701: f文字列の形式定義PEP 695: 型パラメータ文法その他の型ヒント関連機能PEP 688: バッファープロトコルをPythonで利用可能にPEP 684: インタープリター別GILPEP 683: 固定参照カウントによる永続オブジェクトPEP 709: 内包式のインライン化
In [57]:
# 3.10
s="""1: 2000000 loops, best of 5: 0.156 usec per loop
101: 200000 loops, best of 5: 1.95 usec per loop
201: 100000 loops, best of 5: 3.73 usec per loop
301: 50000 loops, best of 5: 5.1 usec per loop
401: 50000 loops, best of 5: 6.62 usec per loop
501: 50000 loops, best of 5: 8.07 usec per loop
601: 50000 loops, best of 5: 9.32 usec per loop
701: 20000 loops, best of 5: 11.3 usec per loop
801: 20000 loops, best of 5: 12.5 usec per loop
901: 20000 loops, best of 5: 14.4 usec per loop
1001: 20000 loops, best of 5: 16 usec per loop
1101: 20000 loops, best of 5: 17.3 usec per loop
1201: 10000 loops, best of 5: 17.8 usec per loop
1301: 20000 loops, best of 5: 19.3 usec per loop
1401: 10000 loops, best of 5: 20.1 usec per loop
1501: 10000 loops, best of 5: 21.9 usec per loop
1601: 10000 loops, best of 5: 23.2 usec per loop
1701: 10000 loops, best of 5: 24.9 usec per loop
1801: 10000 loops, best of 5: 26 usec per loop
1901: 10000 loops, best of 5: 28.7 usec per loop
2001: 10000 loops, best of 5: 28.6 usec per loop
2101: 10000 loops, best of 5: 31.2 usec per loop
2201: 10000 loops, best of 5: 32.2 usec per loop
2301: 10000 loops, best of 5: 32.9 usec per loop
2401: 5000 loops, best of 5: 35.7 usec per loop
2501: 10000 loops, best of 5: 36.7 usec per loop
2601: 10000 loops, best of 5: 40 usec per loop
2701: 5000 loops, best of 5: 39.3 usec per loop
2801: 5000 loops, best of 5: 40.1 usec per loop
2901: 5000 loops, best of 5: 41.9 usec per loop
"""

# 3.12
s2 = """1: 5000000 loops, best of 5: 0.0792 usec per loop
101: 200000 loops, best of 5: 1.41 usec per loop
201: 100000 loops, best of 5: 2.81 usec per loop
301: 100000 loops, best of 5: 3.7 usec per loop
401: 50000 loops, best of 5: 4.91 usec per loop
501: 50000 loops, best of 5: 5.89 usec per loop
601: 50000 loops, best of 5: 6.99 usec per loop
701: 50000 loops, best of 5: 7.7 usec per loop
801: 50000 loops, best of 5: 8.36 usec per loop
901: 50000 loops, best of 5: 10.1 usec per loop
1001: 20000 loops, best of 5: 10.4 usec per loop
1101: 20000 loops, best of 5: 11.5 usec per loop
1201: 20000 loops, best of 5: 12.4 usec per loop
1301: 20000 loops, best of 5: 12.8 usec per loop
1401: 20000 loops, best of 5: 14.2 usec per loop
1501: 20000 loops, best of 5: 15.7 usec per loop
1601: 20000 loops, best of 5: 17 usec per loop
1701: 20000 loops, best of 5: 17.5 usec per loop
1801: 20000 loops, best of 5: 17.6 usec per loop
1901: 10000 loops, best of 5: 19.5 usec per loop
2001: 10000 loops, best of 5: 19.4 usec per loop
2101: 10000 loops, best of 5: 19.9 usec per loop
2201: 10000 loops, best of 5: 22.4 usec per loop
2301: 10000 loops, best of 5: 23 usec per loop
2401: 10000 loops, best of 5: 23.2 usec per loop
2501: 10000 loops, best of 5: 25.3 usec per loop
2601: 10000 loops, best of 5: 25.4 usec per loop
2701: 10000 loops, best of 5: 26 usec per loop
2801: 10000 loops, best of 5: 26.7 usec per loop
2901: 10000 loops, best of 5: 26.7 usec per loop
"""


# 3.11
s3 = """1: 2000000 loops, best of 5: 0.153 usec per loop
101: 200000 loops, best of 5: 1.71 usec per loop
201: 100000 loops, best of 5: 3.38 usec per loop
301: 50000 loops, best of 5: 4.6 usec per loop
401: 50000 loops, best of 5: 5.86 usec per loop
501: 50000 loops, best of 5: 7.12 usec per loop
601: 50000 loops, best of 5: 8.27 usec per loop
701: 20000 loops, best of 5: 9.76 usec per loop
801: 20000 loops, best of 5: 11 usec per loop
901: 20000 loops, best of 5: 11.9 usec per loop
1001: 20000 loops, best of 5: 13.3 usec per loop
1101: 20000 loops, best of 5: 14.6 usec per loop
1201: 20000 loops, best of 5: 15.3 usec per loop
1301: 20000 loops, best of 5: 16.6 usec per loop
1401: 20000 loops, best of 5: 17.8 usec per loop
1501: 20000 loops, best of 5: 18.9 usec per loop
1601: 10000 loops, best of 5: 20.1 usec per loop
1701: 10000 loops, best of 5: 22 usec per loop
1801: 10000 loops, best of 5: 22.9 usec per loop
1901: 10000 loops, best of 5: 23.6 usec per loop
2001: 10000 loops, best of 5: 24.5 usec per loop
2101: 10000 loops, best of 5: 25.7 usec per loop
2201: 10000 loops, best of 5: 26.9 usec per loop
2301: 10000 loops, best of 5: 28.1 usec per loop
2401: 10000 loops, best of 5: 29.4 usec per loop
2501: 10000 loops, best of 5: 30.9 usec per loop
2601: 10000 loops, best of 5: 32 usec per loop
2701: 10000 loops, best of 5: 32.7 usec per loop
2801: 10000 loops, best of 5: 33.8 usec per loop
2901: 10000 loops, best of 5: 35.3 usec per loop
"""
In [13]:
def split(s):
    ret = []
    lines = s.strip().split("\n")
    for line in lines:
        words = line.split()
        n = int(words[0][:-1])
        t = float(words[6])
        ret.append((n, t))
    return ret
In [58]:
r1 = dict(split(s))
r2 = dict(split(s2))
r3 = dict(split(s3))
In [78]:
x = list(r1.keys())
y1 = r1.values()
y2 = r2.values()
y3 = r3.values()

import matplotlib.pyplot as plt

fig, ax1 = plt.subplots()

color = 'tab:blue'
ax1.plot(x, y1, label="3.10")
ax1.plot(x, y3, label="3.11")
ax1.plot(x, y2, label="3.12")
ax1.set_xlabel('Length of ListComp')
ax1.set_ylabel('Time(usec)')

ax2 = ax1.twinx()  
ratio = [a/b for a, b in zip(y1, y2)]
ratio = [(a-b)/b*100 for a, b in zip(y1, y2)]
ax2.plot(x, ratio, label="3.10 v.s. 3.12", color="purple")
ax2.set_ylabel('% faster than 3.10')


lines, labels = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()

fig.subplots_adjust(right=0.85)

#plt.legend(lines + lines2, labels + labels2, loc='upper left', bbox_to_anchor=(1, 1))
plt.legend(lines + lines2, labels + labels2, loc='upper left', bbox_to_anchor=(1.1, 1))
Out[78]:
<matplotlib.legend.Legend at 0x12479b410>
No description has been provided for this image
Copyright © 2001-2023 python.jp Privacy Policy python_japan
Amazon.co.jpアソシエイト
Amazonで他のPython書籍を検索