Slide 1

Slide 1 text

PyCon Korea 2019 ౵੉ॆ 3.7 যଧ Ӓۧѱ ࡈۄ઎ա ੿ѹ਎

Slide 2

Slide 2 text

!2 ডр જইೡ ࢎۈ݅ જইೡ ઱ઁ ߊ಴ ࣗѐ

Slide 3

Slide 3 text

!3 ੉۠ ઱ઁ۽ ߊ಴ܳ ೞח ੉ਬ ߊ಴ ࣗѐ

Slide 4

Slide 4 text

!4 ࢜ ߡ੹੉ ܾܻૉؼ ٸ݃׮ ୃѹࠁѱ غח What's New In Python 3.x ߊ಴ ࣗѐ

Slide 5

Slide 5 text

!5 3.7 ੉੹ীب performance improvement৬ optimizationী ؀ೠ ೦ݾ਷ ઓ੤ ߊ಴ ࣗѐ

Slide 6

Slide 6 text

• 3~5ߓ ࡈۄ૓ os.walk() ೣࣻ • bytes(int) ѐࢶ • 10% ࡈۄ૓ ੿ӏ಴അध ౵य • 25% ࡈۄ૓ property() getter ഐ୹ • ١١ ੗ੜೠ ѐࢶ !6 Python 3.5 Optimizations ߊ಴ ࣗѐ

Slide 7

Slide 7 text

• C۽ ҳഅೠ asyncio.Future, asyncio.Task • 30ߓ ࡅܲ typing ݽٕ • ~4ߓ ࡈۄ૓ os.scandir() !7 Python 3.6 Optimizations ߊ಴ ࣗѐ

Slide 8

Slide 8 text

!8 3.7ীࢶ ௐ ૘য ঱әೠ Optimizations ߊ಴ ࣗѐ

Slide 9

Slide 9 text

!9 ߊ಴ ࣗѐ

Slide 10

Slide 10 text

!10 ߊ಴ ࣗѐ

Slide 11

Slide 11 text

!11 ୊਺ 3.7੉ ܾܻૉغҊ Ӓٺ Ӓր 'য় ࡈۄ઎ҳա જ֎' ߊ಴ ࣗѐ

Slide 12

Slide 12 text

!12 3ର ௑࢟۞٘ - ߛ௼࢟۞٘ ౵੉ॆݍ ۨदೖ ߊ಴ ߊ಴ ࣗѐ

Slide 13

Slide 13 text

!13 ߊ಴ ࣗѐ ౵੉ॆ 3.7੉ о੢ ࡅܲ ۠ఋ੐ ߡ੹੉ۄ ࣗѐ

Slide 14

Slide 14 text

!14 ੉ ٸب Ӓր 'о੢ ࡅܰҳա' ߊ಴ ࣗѐ

Slide 15

Slide 15 text

!15 ৵ ࡅܲ૑ ࢓ಝࠁ۰Ҋ ೞӟ೮ਵա... ߊ಴ ࣗѐ

Slide 16

Slide 16 text

!16 ਺ bpo-xxxxx? ੉Ѥ ަө... Issue#2334 ੉۠Ѥ ঌѷחؘ... ߊ಴ ࣗѐ

Slide 17

Slide 17 text

!17 ই bugs.python.org ۽ ҙܻೞח ੉ग ֈߡ݂੉ҳա ٜযоࠁ੗ ߊ಴ ࣗѐ

Slide 18

Slide 18 text

!18 ߊ಴ ࣗѐ bpo-29300

Slide 19

Slide 19 text

!19 ߊ಴ ࣗѐ bpo-29300 ੉ѱ ޤঠ...

Slide 20

Slide 20 text

!20 ղѱ ੊ࣼೠѤ ੉۠ ചݶੋؘ... ߊ಴ ࣗѐ

Slide 21

Slide 21 text

!21 PR ߑध੉ ੊ࣼೞ؍ աীѱ ц੗ӝ ࠙ਤӝ patch ߊ಴ ࣗѐ bpo-29300

Slide 22

Slide 22 text

!22 ߊ಴ ࣗѐ

Slide 23

Slide 23 text

!23 ߊ಴ ࣗѐ

Slide 24

Slide 24 text

!24 ଵҊ۽ 2017֙ 2ਘࠗఠ CPython ѐߊ਷ hgীࢲ GitHubਵ۽ ੉زೣ ੉ग౟ېఊب GitHub Issueܳ ࢎਊೞ੗ח PEP-581੉ थੋغয ૓೯ ઺ ߊ಴ ࣗѐ

Slide 25

Slide 25 text

!25 Ӓۧѱ ױ֛ೞҊ ૑ղ؍ ઺ ߊ಴ ࣗѐ

Slide 26

Slide 26 text

!26 ߊ಴ ࣗѐ

Slide 27

Slide 27 text

!27 ߊ಴ ࣗѐ Ӓې! աب ݽܰחѦ ߊ಴೧ࠁ੗ Ӓ۞ݶ র૑۽ۄب ׮ ࡸࣿ ࣻ ੓ѷ૑?!

Slide 28

Slide 28 text

!28 ౵੉௑ ߊ಴ ૑ਗ ই... ߊ಴઱ઁ ߄Եࣻ ੓ח૑ ޛযࠅө... ߊ಴ ࣗѐ

Slide 29

Slide 29 text

• ੷ب C ੜ ݽܵפ׮ • ࢜܂ѱ ୶оػ OPCODE੄ ࣁࠗ ҳഅҗ line by line ೧ࢳ • 2,000઴੉ ֈח re-implement in C PR ܻ࠭ೞӝ • ੿ӏ ಴അध ౵ࢲ ৮੹ ੿ࠂ !29 য়ט ݈ೞ૑ ঋਸ ղਊ ߊ಴ ࣗѐ

Slide 30

Slide 30 text

• ࢿמ ѐࢶਸ ਤ೧ যڃ ই੉٣যо ੓঻ա • ؊ ঌҊर׮ݶ য٣ܳ ࠁݶ ؼ૑ • Ӓېب ৮੹ য۵૑݅਷ ঋ਷ C ௏٘ !30 য়ט ݈ೡ ղਊ ߊ಴ ࣗѐ

Slide 31

Slide 31 text

!31 ੿ѹ਎ Jung Winter ߛ௼࢟۞٘ ߔূ٘ ূ૑פয res_tin JungWinter ߊ಴੗

Slide 32

Slide 32 text

!32 Index 01 ӝࠄ ݫࢲ٘ ഐ୹ 02 ౵੉ॆ द੘ दр 03 ੋझఢझ ݫࢲ٘ ഐ୹ 04 asyncio.sleep 05 ੉߮౟ ܖ೐ оઉয়ӝ 06 زदী प೯ೞӝ 07 asyncio.ensure_future 08 typing ݽٕ оઉয়ӝ 09 ܻझ౟ ੿۳ 10 ٤࣊ցܻ ࠂࢎ 11 ੿ӏ಴അध __enter__() __exit__()

Slide 33

Slide 33 text

01 ӝࠄ ݫࢲ٘ ഐ୹

Slide 34

Slide 34 text

!34 The overhead of calling many methods of various standard library classes implemented in C has been significantly reduced by porting more code to use the METH_FASTCALL convention. bpo-29300 bpo-29507 bpo-29452 bpo-29286 01 ӝࠄ ݫࢲ٘ ഐ୹

Slide 35

Slide 35 text

• ಴ળ ۄ੉࠳۞ܻী ࣘೠ ௿ېझী ੓ח ৈ۞ ݫࢲٜ٘ਸ ୭੸ച೮׮. • METH_FASTCALL ஶ߮࣌ਸ ٮܰب۾ ߄Ծ׮. !35 ੉ ѐࢶ੄ ઱ ղਊ 01 ӝࠄ ݫࢲ٘ ഐ୹

Slide 36

Slide 36 text

• ಴ળ ۄ੉࠳۞ܻী ࣘೠ ௿ېझী ੓ח ৈ۞ ݫࢲٜ٘ਸ ୭੸ച೮׮. • METH_FASTCALL ஶ߮࣌ਸ ٮܰب۾ ߄Ծ׮. !36 ੉ ѐࢶ੄ ઱ ղਊ collections.deque੄ index(), insert(), rotate() 01 ӝࠄ ݫࢲ٘ ഐ୹

Slide 37

Slide 37 text

• ಴ળ ۄ੉࠳۞ܻী ࣘೠ ௿ېझী ੓ח ৈ۞ ݫࢲٜ٘ਸ ୭੸ച೮׮. • METH_FASTCALL ஶ߮࣌ਸ ٮܰب۾ ߄Ծ׮. !37 ੉ ѐࢶ੄ ઱ ղਊ collections.deque੄ index(), insert(), rotate() __getitem__() 01 ӝࠄ ݫࢲ٘ ഐ୹

Slide 38

Slide 38 text

• ಴ળ ۄ੉࠳۞ܻী ࣘೠ ௿ېझী ੓ח ৈ۞ ݫࢲٜ٘ਸ ୭੸ച೮׮. • METH_FASTCALL ஶ߮࣌ਸ ٮܰب۾ ߄Ծ׮. !38 ੉ ѐࢶ੄ ઱ ղਊ collections.deque੄ index(), insert(), rotate() __getitem__() str੄ replace(), ljust(), rjust(), strip(), upper() ١ 01 ӝࠄ ݫࢲ٘ ഐ୹

Slide 39

Slide 39 text

!39 METH_FASTCALL੉ ޤӡې 01 ӝࠄ ݫࢲ٘ ഐ୹

Slide 40

Slide 40 text

• ࢤӟѤ opcode୊ۢ ࢤ҂૑݅ ࢎप C ೣࣻ ࢶ঱ ஶ߮࣌ • METH_FASTCALL ஶ߮࣌ী ݏ୾ ೣࣻܳ ࢶ঱ೞݶ ࢿמ࢚ ੉ٙ੉ ੓਺ • ӝઓূ METH_VARARGS ஶ߮࣌ ࢎਊ • ౵੉ॆ tuple → PyObject੄ C ߓৌ !40 METH_FASTCALL 01 ӝࠄ ݫࢲ٘ ഐ୹

Slide 41

Slide 41 text

• ࢤӟѤ opcode୊ۢ ࢤ҂૑݅ ࢎप C ೣࣻ ࢶ঱ ஶ߮࣌ • METH_FASTCALL ஶ߮࣌ী ݏ୾ ೣࣻܳ ࢶ঱ೞݶ ࢿמ࢚ ੉ٙ੉ ੓਺ • ӝઓূ METH_VARARGS ஶ߮࣌ ࢎਊ • ౵੉ॆ tuple → PyObject੄ C ߓৌ !41 METH_FASTCALL 01 ӝࠄ ݫࢲ٘ ഐ୹ ؊ Өѱ ঌҊर׮ݶ bpo-27810, ҙ۲ mailing list

Slide 42

Slide 42 text

!42 01 ӝࠄ ݫࢲ٘ ഐ୹ Python/C API Reference Manual: Common Object Structures

Slide 43

Slide 43 text

!43 Python 3.8ী ୶оػ positional arguments ѐ֛ METH_FASTCALL਷ ࡅܲ؀न keyword arguments ॶ ࣻ হ਺ 01 ӝࠄ ݫࢲ٘ ഐ୹ Python/C API Reference Manual: Common Object Structures

Slide 44

Slide 44 text

!44 01 ӝࠄ ݫࢲ٘ ഐ୹ GitHub - ipython

Slide 45

Slide 45 text

!45 01 ӝࠄ ݫࢲ٘ ഐ୹ Review: Use FASTCALL for collections.deque methods: index, insert, rotate ੉۠धਵ۽ ೣࣻ੄ दӒפ୛৬ ౵य۽૒੉ ߄Պ

Slide 46

Slide 46 text

• ೣࣻ ߸ജҗ ࢤࢿਸ ب৬઱ח بҳ • CPython ղ੢ ೣࣻ ੋࣻ ୊ܻܳ ذח DSL • PEP-436җ how to clinic ޙࢲ !46 Argument Clinic 01 ӝࠄ ݫࢲ٘ ഐ୹

Slide 47

Slide 47 text

• ೣࣻ ߸ജҗ ࢤࢿਸ ب৬઱ח بҳ • CPython ղ੢ ೣࣻ ੋࣻ ୊ܻܳ ذח DSL • PEP-436җ how to clinic ޙࢲ !47 Argument Clinic 01 ӝࠄ ݫࢲ٘ ഐ୹

Slide 48

Slide 48 text

!48 ׮নೠ ݫࢲٜ٘੉ ~30% ੿ب ࡈۄ૗ 01 ӝࠄ ݫࢲ٘ ഐ୹

Slide 49

Slide 49 text

02 ౵੉ॆ द੘ दр

Slide 50

Slide 50 text

!50 Various optimizations have reduced Python startup time by 10% on Linux and up to 30% on macOS. bpo-31333: Implement ABCMeta in C bpo-29585: site.py imports relatively large `sysconfig` module 02 ౵੉ॆ द੘ दр

Slide 51

Slide 51 text

• abcݽٕਸ C۽ ׮द ૧׮. • site.pyо ࢎਊೞח sysconfig.py੄ ౠ੿ ೣࣻܳ import ೞ૑ ঋҊ ࠂࢎ೧ࢲ ࢎਊೞ ب۾ ߄Ծ׮. • ؒਵ۽ isinstance৬ issubclassب 1.5ߓ ࡈۄ઎׮. !51 ੉ ѐࢶ੄ ઱ ղਊ 02 ౵੉ॆ द੘ दр

Slide 52

Slide 52 text

!52 C۽ ׮द ૠ abc ݽٕ 02 ౵੉ॆ द੘ दр

Slide 53

Slide 53 text

!53 02 ౵੉ॆ द੘ दр ղਊ਷ Ӓր abc ݽٕਸ C۽ ૧׮. ؊ ঌҊ र׮ݶ #5273 PR

Slide 54

Slide 54 text

!54 02 ౵੉ॆ द੘ दр ೠ ׳р

Slide 55

Slide 55 text

!55 02 ౵੉ॆ द੘ दр ೠ ׳р

Slide 56

Slide 56 text

!56 02 ౵੉ॆ द੘ दр ೠ ׳р ড 300ѐ੄ ܻ࠭

Slide 57

Slide 57 text

!57 02 ౵੉ॆ द੘ दр ೠ ׳р ড 300ѐ੄ ܻ࠭ 2,000઴੉ ֈח ߸҃

Slide 58

Slide 58 text

!58 ૑ࣘ оמೠ ਬ૑ࠁࣻܳ ୶ҳೞח ݽण 02 ౵੉ॆ द੘ दр

Slide 59

Slide 59 text

!59 site.pyীࢲ sysconfig import ઁѢ 02 ౵੉ॆ द੘ दр

Slide 60

Slide 60 text

• site ݽٕ਷ ੋఠ೐ܻఠܳ प೯ೡ ٸ ੗زਵ۽ import غח ݽٕ. site-package੄ ҃ ۽ܳ ଺Ҋ ୶оೣ • ࢎਊೞ۰ח sysconfig੄ ೣࣻܳ site.py۽ оઉ১ • ׼ো൤ աয়ח ਬ૑ࠁࣻ ਋۰. ف ݽٕ ࢎ੉੄ ঐޗ੸ੋ ҙ҅ • ׮݅ ݽٕਸ C۽ ׮द ੘ࢿೞѢա য়ېغҊ ௾ ݽٕীࢲ ೙ਃೠ ࠗ࠙݅ ܻ࠙ೞח Ѥ ց ޖ ௾ ੘স੉޲۽ ٯ ೙ਃೠ ࠗ࠙݅ оઉয়Ҋ ਬ૑ࠁࣻܳ ਤೠ ઱ࢳਸ ׮ח Ѫਵ۽ ೤੄ • ֿܻझীࢶ 5% ࡈۄ઎Ҋ macOSীࢶ 30% ࡈۄ૗ 02 ౵੉ॆ द੘ दр

Slide 61

Slide 61 text

!61 02 ౵੉ॆ द੘ दр

Slide 62

Slide 62 text

03 ੋझఢझ ݫࢲ٘ ഐ୹

Slide 63

Slide 63 text

!63 Method calls are now up to 20% faster due to the bytecode changes which avoid creating bound method instances. bpo-26110: Speedup method calls 1.2x 03 ੋझఢझ ݫࢲ٘ ഐ୹

Slide 64

Slide 64 text

• positional arguments ೣࣻ ഐ୹ী ؀ೠ ࢜۽਍ opcode 2ѐ ୶о • LOAD_METHOD, CALL_METHOD • ӝઓ opcodeܳ ߄Լب ع૑݅ ੉ۡ҃਋ ݆਷ ࠗ࠙ীࢲ য়൤۰ ࢿמ ೞۅ !64 ੉ ѐࢶ੄ ઱ ղਊ 03 ੋझఢझ ݫࢲ٘ ഐ୹

Slide 65

Slide 65 text

• positional arguments ೣࣻ ഐ୹ী ؀ೠ ࢜۽਍ opcode 2ѐ ୶о • LOAD_METHOD, CALL_METHOD • ӝઓ opcodeܳ ߄Լب ع૑݅ ੉ۡ҃਋ ݆਷ ࠗ࠙ীࢲ য়൤۰ ࢿמ ೞۅ !65 ੉ ѐࢶ੄ ઱ ղਊ 03 ੋझఢझ ݫࢲ٘ ഐ୹ ؊ ঌҊ र׮ݶ bpo-26110: Patch Set

Slide 66

Slide 66 text

!66 TMI 03 ੋझఢझ ݫࢲ٘ ഐ୹ ӈب ߈ ۽ࢻ੉ Ӓزউ s.startswith('abc')੉ s[:3] == 'abc' ࠁ׮ ו۷׮ݶࢲ ই੉٣যܳ જইೣ ই૒ ੸ਊغ૓ ঋই ৈ੹൤ s[:3] == 'abc'о ؊ ࡅܰ૑݅ ա઺ী ੸ਊ оמ

Slide 67

Slide 67 text

04 asyncio.sleep

Slide 68

Slide 68 text

!68 ਫ਼द एযоח दр рױೠ ই੉٣য۽ ࢿמ ೱ࢚ਸ ੉ܞմ PRب ੓਺ 04 asyncio.sleep

Slide 69

Slide 69 text

!69 asyncio.sleep() is now up to 2 times faster when the delay argument is zero or negative. bpo-32351: Use fastpath in asyncio.sleep if delay<0 04 asyncio.sleep

Slide 70

Slide 70 text

asyncio.sleepਵ۽ ֈযৡ delayо ਺ࣻݶ Futureب উٜ݅Ҋ loopী झாે݂ب ೞ૑ঋب۾ ߄Պ !70 ੉ ѐࢶ੄ ઱ ղਊ 04 asyncio.sleep #4908 PR

Slide 71

Slide 71 text

!71 04 asyncio.sleep

Slide 72

Slide 72 text

!72 04 asyncio.sleep ܖ೐ оઉ৬ Future ݅٘ח җ੿

Slide 73

Slide 73 text

!73 04 asyncio.sleep ܖ೐ী झாે݂ ೞח җ੿

Slide 74

Slide 74 text

!74 ׼ੌզ ઁউغҊ ׼ੌզ PRৢۄ৬ 2दр ݅ী ݠ૑ؽ 04 asyncio.sleep

Slide 75

Slide 75 text

05 ੉߮౟ ܖ೐ оઉয়ӝ

Slide 76

Slide 76 text

!76 The asyncio.get_event_loop() function has been reimplemented in C to make it up to 15 times faster. bpo-32296: Implement asyncio._get_running_loop() and get_event_loop() in C 05 ੉߮౟ ܖ೐ оઉয়ӝ

Slide 77

Slide 77 text

• asyncio.get_event_loop, get_running_loop ೣࣻܳ C۽ ૞ࢲ 4ߓ ࡅܰѱ ݅ٝ • get_running_loopܳ ژ ѐࢶ೧ࢲ 4ߓ ࡅܰѱ ݅ٝ • நय ࢎਊ • os.getpid()؀न getpid() ܳ ࢎਊೞب۾ ѐࢶೣ !77 ੉ ѐࢶ੄ ઱ ղਊ 05 ੉߮౟ ܖ೐ оઉয়ӝ

Slide 78

Slide 78 text

• asyncio.get_event_loop, get_running_loop ೣࣻܳ C۽ ૞ࢲ 4ߓ ࡅܰѱ ݅ٝ • get_running_loopܳ ژ ѐࢶ೧ࢲ 4ߓ ࡅܰѱ ݅ٝ • நय ࢎਊ • os.getpid()؀न getpid() ܳ ࢎਊೞب۾ ѐࢶೣ !78 ੉ ѐࢶ੄ ઱ ղਊ ࢿמ ೱ࢚੄ 80% ਃੋ 05 ੉߮౟ ܖ೐ оઉয়ӝ

Slide 79

Slide 79 text

!79 C۽ ׮द ૠ get_event_loop 05 ੉߮౟ ܖ೐ оઉয়ӝ

Slide 80

Slide 80 text

!80 05 ੉߮౟ ܖ೐ оઉয়ӝ #4827 PR: Python - get_event_loop ੉ۧѱ рױೠ ౵੉ॆ ௏٘ب

Slide 81

Slide 81 text

!81 05 ੉߮౟ ܖ೐ оઉয়ӝ #4827 PR: C - get_event_loop C۽ ૠ׮ݶ ੉ۧѱ ੢ട೧૓׮

Slide 82

Slide 82 text

!82 05 ੉߮౟ ܖ೐ оઉয়ӝ

Slide 83

Slide 83 text

!83 ѐࢶػ getpid() 05 ੉߮౟ ܖ೐ оઉয়ӝ

Slide 84

Slide 84 text

!84 05 ੉߮౟ ܖ೐ оઉয়ӝ #5277 PR

Slide 85

Slide 85 text

!85 05 ੉߮౟ ܖ೐ оઉয়ӝ #5277 PR ౵੉ॆ੄ os.getpid()ܳ ഐ୹ೞҊ

Slide 86

Slide 86 text

!86 05 ੉߮౟ ܖ೐ оઉয়ӝ #5277 PR ఋੑਸ ࠺Ү

Slide 87

Slide 87 text

!87 05 ੉߮౟ ܖ೐ оઉয়ӝ #5277 PR

Slide 88

Slide 88 text

• ӝઓীח ࡅܰѱ ॳҊ र׮ݶ uvloopо ୭ࢶ • ੉ ߸҃ ࢎ೦ਵ۽ uvloop۽ب ࣘبо ࡈۄ૕ ࣻ হ঻؍ ࠗ࠙ਸ ѐࢶೣ • uvloopח event loop policyܳ ా೧ ੉߮౟ ܖ೐ ੗୓ী ؀ೠ ࠗ࠙ਸ ѐࢶೞӝ ٸޙ • അ੤ ੉߮౟ ܖ೐ܳ оઉয়Ҋ ߈ജೞחѤ API۽ ઁҕೞ૑ ঋওӝী Ѥܾ٘ ࣻ হ਺ 05 ੉߮౟ ܖ೐ оઉয়ӝ

Slide 89

Slide 89 text

!89 05 ੉߮౟ ܖ೐ оઉয়ӝ uvloopо ѐࢶೡ ࣻ ੓ח ৔৉

Slide 90

Slide 90 text

06 زदী प೯ೞӝ

Slide 91

Slide 91 text

!91 async ҙ۲ ѐࢶ਷ খਵ۽ ૣ਷Ѣ ೞա݅ ؊ թওणפ׮! 06 زदী प೯ೞӝ

Slide 92

Slide 92 text

!92 asyncio.gather() is now up to 15% faster. bpo-32355: Optimize asyncio.gather() 06 زदী प೯ೞӝ

Slide 93

Slide 93 text

asyncio.gather ৘ઁ 06 زदী प೯ೞӝ

Slide 94

Slide 94 text

• ੋ੗۽ ٜযৡ ௏ܖ౯ ೞաೞա݃׮ functools.partial ೞ؍ ࠗ࠙ਸ ઁѢ • ensure_future৬ ઺ࠂغח ۽૒ ઁѢ !94 ੉ ѐࢶ੄ ઱ ղਊ 06 زदী प೯ೞӝ

Slide 95

Slide 95 text

!95 functools.partial ઁѢ 05 ੉߮౟ ܖ೐ оઉয়ӝ

Slide 96

Slide 96 text

!96 06 زदী प೯ೞӝ #4913 PR

Slide 97

Slide 97 text

!97 06 زदী प೯ೞӝ #4913 PR ӝઓূ ೞա ՘զ ٸ݃׮ Ѿҗܳ ੷੢೮׮ݶ ѐࢶ റূ ׮ ՘աݶ Ӓٸࢲঠ Ѿҗܳ ੷੢

Slide 98

Slide 98 text

07 asyncio.ensure_future

Slide 99

Slide 99 text

!99 bpo-33505: Optimize asyncio.ensure_future by reordering if conditions Optimize asyncio.ensure_future() by reordering if checks: 1.17x faster. 07 asyncio.ensure_future

Slide 100

Slide 100 text

• ensure_futureח ੋ੗о futureо ইפݶ future۽ ߸ജ • future.isfuture()۽ futureੋ૑ ݢ੷ ѨࢎೞҊ coroutines.iscoroutine()۽ ௏ ܖ౯ੋ૑ Ѩࢎೣ • Ӓؘ۠ पઁ۽ ࢎਊೞחѦ ࠁݶ ؀ࠗ࠙ run_until_complete()ی async ೣࣻо ֈয ৡ gather() ীࢲ ࢎਊؽ • Ӓ۞޲۽ ௏ܖ౯ਸ ݢ੷ Ѩࢎೞب۾ ifޙ ࣽࢲܳ ߄Է !100 ੉ ѐࢶ੄ ઱ ղਊ 07 asyncio.ensure_future

Slide 101

Slide 101 text

• ensure_futureח ੋ੗о futureо ইפݶ future۽ ߸ജ • future.isfuture()۽ futureੋ૑ ݢ੷ ѨࢎೞҊ coroutines.iscoroutine()۽ ௏ ܖ౯ੋ૑ Ѩࢎೣ • Ӓؘ۠ पઁ۽ ࢎਊೞחѦ ࠁݶ ؀ࠗ࠙ run_until_complete()ی async ೣࣻо ֈয ৡ gather() ীࢲ ࢎਊؽ • Ӓ۞޲۽ ௏ܖ౯ਸ ݢ੷ Ѩࢎೞب۾ ifޙ ࣽࢲܳ ߄Է !101 ੉ ѐࢶ੄ ઱ ղਊ 07 asyncio.ensure_future tmi: async def۽ ࢶ঱ೠ ೣࣻח ௏ܖ౯ਸ ࢤࢿ ೞח ೣࣻо ؽ

Slide 102

Slide 102 text

ইө ৘ઁ 07 asyncio.ensure_future

Slide 103

Slide 103 text

08 typing ݽٕ оઉয়ӝ

Slide 104

Slide 104 text

!104 As a result of PEP 560 work, the import time of typing has been reduced by a factor of 7, and many typing operations are now faster. bpo-32226: Implement PEP 560: Core support for typing module and generic types 08 typing ݽٕ оઉয়ӝ

Slide 105

Slide 105 text

• ઁ֎ܼ ഋधਸ ؊ ੜ ૑ਗೞӝ ਤ೧ ౠࣻ ݫࢲ٘ܳ ୶о • __class_getitem__, __mro_entries__ !105 ੉ ѐࢶ੄ ઱ ղਊ 08 typing ݽٕ оઉয়ӝ

Slide 106

Slide 106 text

• ఋੑ ൦౴ਸ ઁউೠ PEP-484਷ ੋఠ೐ܻఠ ۨ߰੄ ߸҃਷ হب۾ ٣੗ੋؽ • Ӓېࢲ Generic[T], Iterable[int], List[str] ١ਸ ҳഅೞӝ ਤ೧ࢶ ৈ۞о૑ ౟ܼ ਸ ࢎਊೡ ࣻ ߆ী হ঻਺. __getitem__਷ ੋझఢझীࢲ݅ ز੘ೞҊ ௿ېझীࢶ ز੘ೞ ૑ ঋ਺ • Ӓؘ۠ ੉ઃ ఋ੉ೝ, ఋੑ ൦౟о օܻ ࢎਊغפ ੉ ઁೠਸ ಽয ઁ֎ܼ ഋध ૑ਗਸ ਤೠ ౠࣻ ݫࢲ٘ܳ ୶оೣ. ੉ѱ PEP-560੄ ղਊ !106 ੉ ѐࢶ੄ ઱ ղਊ 08 typing ݽٕ оઉয়ӝ

Slide 107

Slide 107 text

• ఋੑ ൦౴ਸ ઁউೠ PEP-484਷ ੋఠ೐ܻఠ ۨ߰੄ ߸҃਷ হب۾ ٣੗ੋؽ • Ӓېࢲ Generic[T], Iterable[int], List[str] ١ਸ ҳഅೞӝ ਤ೧ࢶ ৈ۞о૑ ౟ܼ ਸ ࢎਊೡ ࣻ ߆ী হ঻਺. __getitem__਷ ੋझఢझীࢲ݅ ز੘ೞҊ ௿ېझীࢶ ز੘ೞ ૑ ঋ਺ • Ӓؘ۠ ੉ઃ ఋ੉ೝ, ఋੑ ൦౟о օܻ ࢎਊغפ ੉ ઁೠਸ ಽয ઁ֎ܼ ഋध ૑ਗਸ ਤೠ ౠࣻ ݫࢲ٘ܳ ୶оೣ. ੉ѱ PEP-560੄ ղਊ !107 ੉ ѐࢶ੄ ઱ ղਊ 08 typing ݽٕ оઉয়ӝ

Slide 108

Slide 108 text

• ఋੑ ൦౴ਸ ઁউೠ PEP-484਷ ੋఠ೐ܻఠ ۨ߰੄ ߸҃਷ হب۾ ٣੗ੋؽ • Ӓېࢲ Generic[T], Iterable[int], List[str] ١ਸ ҳഅೞӝ ਤ೧ࢶ ৈ۞о૑ ౟ܼ ਸ ࢎਊೡ ࣻ ߆ী হ঻਺. __getitem__਷ ੋझఢझীࢲ݅ ز੘ೞҊ ௿ېझীࢶ ز੘ೞ ૑ ঋ਺ • Ӓؘ۠ ੉ઃ ఋ੉ೝ, ఋੑ ൦౟о օܻ ࢎਊغפ ੉ ઁೠਸ ಽয ઁ֎ܼ ഋध ૑ਗਸ ਤೠ ౠࣻ ݫࢲ٘ܳ ୶оೣ. ੉ѱ PEP-560੄ ղਊ !108 ੉ ѐࢶ੄ ઱ ղਊ 08 typing ݽٕ оઉয়ӝ

Slide 109

Slide 109 text

• ࢜܂ѱ ୶оػ __class_getitem__੉ যڌѱ ࢿמਸ ѐࢶदௌח૑ח #4906 PRী 2,400઴੄ diff۽ ੗ࣁ൤ ա৬੓਺. • Ӓزউ typing ݽٕ੉ importо ו۷חؘ Ѣ੄ ઁ֎ܼఋੑ ٸޙ੉঻਺ • ੉ ߸҃ਵ۽ ݽٕ importח 7ߓ, ઁ֎ܼ ௿ېझ ࢤࢿ਷ 4ߓ ࡈۄ૗ • ਬੌೠ ࠳ۨ੉ఊ ୓ੋ૑ח ೧׼ ؍؊ݫࣗ٘ܳ ੐੄۽ ҳഅ೧ ׮ܲ ਊب۽ ॳҊ੓؍ ௏٘ • ೞ૑݅ ੉޷ ؍؊ݫࣗ٘ח ҃Ҋহ੉ ӵ૕ࣻ੓׮Ҋ ੸যְӝী ޙઁ হ਺ !109 ੉ ѐࢶ੄ ઱ ղਊ 08 typing ݽٕ оઉয়ӝ

Slide 110

Slide 110 text

• ࢜܂ѱ ୶оػ __class_getitem__੉ যڌѱ ࢿמਸ ѐࢶदௌח૑ח #4906 PRী 2,400઴੄ diff۽ ੗ࣁ൤ ա৬੓਺. • Ӓزউ typing ݽٕ੉ importо ו۷חؘ Ѣ੄ ઁ֎ܼఋੑ ٸޙ੉঻਺ • ੉ ߸҃ਵ۽ ݽٕ importח 7ߓ, ઁ֎ܼ ௿ېझ ࢤࢿ਷ 4ߓ ࡈۄ૗ • ਬੌೠ ࠳ۨ੉ఊ ୓ੋ૑ח ೧׼ ؍؊ݫࣗ٘ܳ ੐੄۽ ҳഅ೧ ׮ܲ ਊب۽ ॳҊ੓؍ ௏٘ • ೞ૑݅ ੉޷ ؍؊ݫࣗ٘ח ҃Ҋহ੉ ӵ૕ࣻ੓׮Ҋ ੸যְӝী ޙઁ হ਺ !110 ੉ ѐࢶ੄ ઱ ղਊ 08 typing ݽٕ оઉয়ӝ

Slide 111

Slide 111 text

• ࢜܂ѱ ୶оػ __class_getitem__੉ যڌѱ ࢿמਸ ѐࢶदௌח૑ח #4906 PRী 2,400઴੄ diff۽ ੗ࣁ൤ ա৬੓਺. • Ӓزউ typing ݽٕ੉ importо ו۷חؘ Ѣ੄ ઁ֎ܼఋੑ ٸޙ੉঻਺ • ੉ ߸҃ਵ۽ ݽٕ importח 7ߓ, ઁ֎ܼ ௿ېझ ࢤࢿ਷ 4ߓ ࡈۄ૗ • ਬੌೠ ࠳ۨ੉ఊ ୓ੋ૑ח ೧׼ ؍؊ݫࣗ٘ܳ ੐੄۽ ҳഅ೧ ׮ܲ ਊب۽ ॳҊ੓؍ ௏٘ • ೞ૑݅ ੉޷ ؍؊ݫࣗ٘ח ҃Ҋহ੉ ӵ૕ࣻ੓׮Ҋ ੸যְӝী ޙઁ হ਺ !111 ੉ ѐࢶ੄ ઱ ղਊ 08 typing ݽٕ оઉয়ӝ

Slide 112

Slide 112 text

• ࢜܂ѱ ୶оػ __class_getitem__੉ যڌѱ ࢿמਸ ѐࢶदௌח૑ח #4906 PRী 2,400઴੄ diff۽ ੗ࣁ൤ ա৬੓਺. • Ӓزউ typing ݽٕ੉ importо ו۷חؘ Ѣ੄ ઁ֎ܼఋੑ ٸޙ੉঻਺ • ੉ ߸҃ਵ۽ ݽٕ importח 7ߓ, ઁ֎ܼ ௿ېझ ࢤࢿ਷ 4ߓ ࡈۄ૗ • ਬੌೠ ࠳ۨ੉ఊ ୓ੋ૑ח ೧׼ ؍؊ݫࣗ٘ܳ ੐੄۽ ҳഅ೧ ׮ܲ ਊب۽ ॳҊ੓؍ ௏٘ • ೞ૑݅ ੉޷ ؍؊ݫࣗ٘ח ҃Ҋহ੉ ӵ૕ࣻ੓׮Ҋ ੸যְӝী ޙઁ হ਺ !112 ੉ ѐࢶ੄ ઱ ղਊ 08 typing ݽٕ оઉয়ӝ

Slide 113

Slide 113 text

09 ܻझ౟ ੿۳

Slide 114

Slide 114 text

!114 sorted() and list.sort() have been optimized for common cases to be up to 40-75% faster. bpo-28685: Optimizing list.sort() by performing safety checks in advance 09 ܻझ౟ ੿۳

Slide 115

Slide 115 text

• ੿۳ ঌҊ્ܻਸ ߸҃ೠ Ѫ੉ ইש • ܻझ౟ܳ ੿۳ೡ ٸ ؀ࠗ࠙੄ ҃਋ чٜ੉ ࢲ۽ زੌೠ ఋੑ੉ۄҊ о੿ • ݒߣ чਸ ࠺Үೡ ٸ݃׮ ఋੑ Ѩࢎೞ૑ ݈Ҋ ޷ܻ ೠ ߣ݅ ೧ف੗! о ই੉٣য !115 ੉ ѐࢶ੄ ઱ ղਊ 09 ܻझ౟ ੿۳

Slide 116

Slide 116 text

• ੿۳ ঌҊ્ܻਸ ߸҃ೠ Ѫ੉ ইש • ܻझ౟ܳ ੿۳ೡ ٸ ؀ࠗ࠙੄ ҃਋ чٜ੉ ࢲ۽ زੌೠ ఋੑ੉ۄҊ о੿ • ݒߣ чਸ ࠺Үೡ ٸ݃׮ ఋੑ Ѩࢎೞ૑ ݈Ҋ ޷ܻ ೠ ߣ݅ ೧ف੗! о ই੉٣য !116 ੉ ѐࢶ੄ ઱ ղਊ 09 ܻझ౟ ੿۳

Slide 117

Slide 117 text

• ৈ۞о૑ о੿ਸ ࣁ਋Ҋ pre-check stageܳ ݅ٝ • safe_object_compare: ৈ۞ ఋੑ੉ ੓׮Ҋ о੿, ӝઓী ࢎਊೞ؍ উ੹ೠ ߑध • unsafe_object_compare: ೠ ఋੑ੉ۄҊ о੿ • unsafe_latin_compare: Latin ޙ੗ৌ੉ۄҊ о੿ • Ӓ ৻ int, float, tuple۽ ੉ܖয૓ ܻझ౟ۄҊ о੿ • о੿ਸ ѨૐೞҊ ੸ਊ೧ ࠺ਊ੉ ࠺ऴ উ੿ࢿ Ѩࢎܳ ਋ഥೞח ୭੸ച ࠺Ү ೣࣻ ࢎਊ !117 ੉ ѐࢶ੄ ઱ ղਊ 09 ܻझ౟ ੿۳

Slide 118

Slide 118 text

!118 09 ܻझ౟ ੿۳ #582 PR

Slide 119

Slide 119 text

!119 09 ܻझ౟ ੿۳ #582 PR п о੿ٜਸ Ѩૐೞח C ௏٘৬ ୭੸ചػ ࠺Ү ೣࣻח যڌѱ ࢤ҂ח૑ח ࢤۚ

Slide 120

Slide 120 text

!120 ই઱ ୭ঈ੄ ҃਋ ਤ੄ о੿ٜ੉ ݽف ౣܻѱ غҊ ӝࠄز੘ੋ safe_object_compare۽ ֈযоӝө૑ pre-check ٸޙী 15%੿ب ו۰૗ 09 ܻझ౟ ੿۳

Slide 121

Slide 121 text

10 ٤࣊ցܻ ࠂࢎ

Slide 122

Slide 122 text

!122 dict.copy() is now up to 5.5 times faster. bpo-31179: Speed-up dict.copy() up to 5.5 times. 10 ٤࣊ցܻ ࠂࢎ

Slide 123

Slide 123 text

• ਗېח ࠼ dictܳ ٜ݅Ҋ key, valueܳ ೞաঀ ୶о • ӝઓ dict ੹୓ key, value ৔৉੄ ݫݽܻܳ ా૩۽ ࠂࢎ(memcpy)ೞҊ ۨಌ۠झ ஠਍౟ ܳ ט۰઱੗(increfs)! о ই੉٣য • ܻ࠭যо ੗઱ ࢎਊೞ૑ ঋח ӝמٸޙী 50઴੄ C ௏٘ܳ ୶оೠ׮Ҋ ਬ૑ࠁࣻ ஏݶী ࢲ ৏۰ೣ • ೞ૑݅ ੷੗о 50݅ ઴ ੉࢚੄ ೐۽ં౟ա ORMীࢲ dict.copyח ഝߊ൤ ࢎਊೠ׮ ঱ әೞݴ 5.5ߓ ࡅܰѱೞחѤ ୽࠙൤ ੄޷੓׮Ҋ ࢸٙ. tmi: ੷੗ח asyncpg੄ ݫੋప੉ց !123 ੉ ѐࢶ੄ ઱ ղਊ 10 ٤࣊ցܻ ࠂࢎ

Slide 124

Slide 124 text

• ਗېח ࠼ dictܳ ٜ݅Ҋ key, valueܳ ೞաঀ ୶о • ӝઓ dict ੹୓ key, value ৔৉੄ ݫݽܻܳ ా૩۽ ࠂࢎ(memcpy)ೞҊ ۨಌ۠झ ஠਍౟ ܳ ט۰઱੗(increfs)! о ই੉٣য • ܻ࠭যо ੗઱ ࢎਊೞ૑ ঋח ӝמٸޙী 50઴੄ C ௏٘ܳ ୶оೠ׮Ҋ ਬ૑ࠁࣻ ஏݶী ࢲ ৏۰ೣ • ೞ૑݅ ੷੗о 50݅ ઴ ੉࢚੄ ೐۽ં౟ա ORMীࢲ dict.copyח ഝߊ൤ ࢎਊೠ׮ ঱ әೞݴ 5.5ߓ ࡅܰѱೞחѤ ୽࠙൤ ੄޷੓׮Ҋ ࢸٙ. tmi: ੷੗ח asyncpg੄ ݫੋప੉ց !124 ੉ ѐࢶ੄ ઱ ղਊ 10 ٤࣊ցܻ ࠂࢎ

Slide 125

Slide 125 text

11 ੿ӏ಴അध

Slide 126

Slide 126 text

!126 Optimized case-insensitive matching and searching of regular expressions. Searching some patterns can now be up to 20 times faster. bpo-30285: Optimize case-insensitive regular expressions 11 ੿ӏ಴അध

Slide 127

Slide 127 text

• ӝઓ੄ case-insensitive ݽ٘(re.IGNORECASE)ח ݽٚ ޙ੗ܳ lower case۽ ٜ݅Ҋ ݻо૑ ୭੸ചܳ ࠺ഝࢿചೣ • ೞ૑݅ য়۽૑ 2669ѐ੄ Ӗ੗݅੉ lower/upper case ҳ࠙੉ ੓਺ • ब૑য ইझః ݽ٘(re.ASCII)ীࢶ ױ 52Ӗ੗ • ೧׼ Ӗ੗ٜ݅ ٮ۽ ୊ܻೞҊ աݠ૑ ݽٚ Ӗ੗ী ؀೧ࢶ case-sensitive ݽ٘੄ ୭੸ച ب ੸ਊ೧ ࡅܲ ࣘب۽ ୊ܻೞѱՔ ѐࢶ !127 ੉ ѐࢶ੄ ઱ ղਊ 11 ੿ӏ಴അध

Slide 128

Slide 128 text

__exit__():

Slide 129

Slide 129 text

Python 3.6 vs 3.7 ӝࠄ ݫࢲ٘ ഐ୹ ౵੉ॆ द੘ दр ੋझఢझ ݫࢲ٘ ഐ୹ asyncio.sleep ੉߮౟ ܖ೐ оઉয়ӝ زदী प೯ೞӝ asyncio.ensure_future typing ݽٕ оઉয়ӝ ܻझ౟ ੿۳ ٤࣊ցܻ ࠂࢎ ੿ӏ಴അध ՘ਵ۽

Slide 130

Slide 130 text

Python 3.6 vs 3.7 ӝࠄ ݫࢲ٘ ഐ୹ ౵੉ॆ द੘ दр ੋझఢझ ݫࢲ٘ ഐ୹ asyncio.sleep ੉߮౟ ܖ೐ оઉয়ӝ زदী प೯ೞӝ asyncio.ensure_future typing ݽٕ оઉয়ӝ ܻझ౟ ੿۳ ٤࣊ցܻ ࠂࢎ ੿ӏ಴അध ՘ਵ۽

Slide 131

Slide 131 text

Python 3.6 vs 3.7 ՘ਵ۽

Slide 132

Slide 132 text

Python 3.6 vs 3.7 ՘ਵ۽ pyperf

Slide 133

Slide 133 text

Python 3.6 vs 3.7 ՘ਵ۽

Slide 134

Slide 134 text

• ౵੉ॆ 3.7 ୶ୌ೤פ׮, ౠ൤ ࠺زӝܳ ॵ׮ݶ ؊਌ • ౵੉ॆ਷ ו݀פ׮, ೞ૑݅ न҃ॳ૑ ঋणפ׮ • ಌನݢझী ӝৈ೧઱न ஶ౟ܻ࠭ఠٜ࠙ хࢎ೤פ׮ !134 ೞҊर਷ ݈ Victor Stinner Inada Naoki Ivan Levkivskyi Yury Selivanov Sethiy Storchaka else: ՘ਵ۽

Slide 135

Slide 135 text

!135 ਺ ࡅܰҳա Ӓա݃ ...

Slide 136

Slide 136 text

!136 য় ࡅܰҳա ੉ېࢲ !

Slide 137

Slide 137 text

session.close()