Python 3.9 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ถœ์‹œ

XNUMX๋…„์˜ ๊ฐœ๋ฐœ ๋์— ์ œ์‹œ๋œ ์ค‘์š”ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ถœ์‹œ ํŒŒ์ด์ฌ 3.9. Python 3.9๋Š” Python XNUMX ์ดํ›„ ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค์˜€์Šต๋‹ˆ๋‹ค. ์ „ํ™˜ ํ”„๋กœ์ ํŠธ ์ƒˆ๋กœ์šด ์‚ฌ์ดํด ๋ฆด๋ฆฌ์Šค ์ค€๋น„ ๋ฐ ์ง€์›. ์ƒˆ๋กœ์šด ์ฃผ์š” ๋ฆด๋ฆฌ์Šค๋Š” ์ด์ œ XNUMX๋…„์— ํ•œ ๋ฒˆ์”ฉ ์ƒ์„ฑ๋˜๋ฉฐ ์ˆ˜์ • ์—…๋ฐ์ดํŠธ๋Š” XNUMX๊ฐœ์›”๋งˆ๋‹ค ๋ฆด๋ฆฌ์Šค๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์ฃผ์š” ์ง€์ ์€ XNUMX๋…„ ๋ฐ˜ ๋™์•ˆ ์ง€์›๋˜๋ฉฐ, ๊ทธ ํ›„ ์ทจ์•ฝ์ ์„ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด XNUMX๋…„ ๋ฐ˜์ด ๋” ๊ฐœ๋ฐœ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ œ ์ƒˆ ๋ธŒ๋žœ์น˜์— ๋Œ€ํ•œ ์ž‘์—…์€ ๋‹ค์Œ ๋ธŒ๋žœ์น˜๊ฐ€ ์ถœ์‹œ๋˜๊ธฐ 3.9๊ฐœ์›” ์ „์— ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. Python XNUMX ์ถœ์‹œ์™€ ๋™์‹œ์— ์‹œ์ž‘ํ•œ Python 3.10 ๋ธŒ๋žœ์น˜์˜ ์•ŒํŒŒ ํ…Œ์ŠคํŠธ. Python 3.10 ๋ถ„๊ธฐ๋Š” XNUMX๊ฐœ์›” ๋™์•ˆ ์•ŒํŒŒ ๋ฆด๋ฆฌ์Šค๋กœ ์ œ๊ณต๋˜๋ฉฐ, ์ด ๊ธฐ๊ฐ„ ๋™์•ˆ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๊ณ  ๋ฒ„๊ทธ๊ฐ€ ์ˆ˜์ •๋ฉ๋‹ˆ๋‹ค. ๊ทธ ํ›„ ๋ฒ ํƒ€ ๋ฒ„์ „์€ XNUMX๊ฐœ์›” ๋™์•ˆ ํ…Œ์ŠคํŠธ๋˜๋ฉฐ, ์ด ๊ธฐ๊ฐ„ ๋™์•ˆ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋Š” ๊ธˆ์ง€๋˜๊ณ  ๋ฒ„๊ทธ ์ˆ˜์ •์— ๋ชจ๋“  ์ฃผ์˜๊ฐ€ ์ง‘์ค‘๋ฉ๋‹ˆ๋‹ค. ์ถœ์‹œ ์ „ ๋งˆ์ง€๋ง‰ ๋‘ ๋‹ฌ ๋™์•ˆ ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋Š” ์ถœ์‹œ ํ›„๋ณด ๋‹จ๊ณ„์— ์ด๋ฅด๋ฉฐ ์ตœ์ข… ์•ˆ์ •ํ™” ์ž‘์—…์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

์ค‘ ์ถ”๊ฐ€๋จ ํ˜์‹  ํŒŒ์ด์ฌ 3.9์—์„œ:

  • ๋‚ด์žฅ dict ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜๋œ ์‚ฌ์ „์—์„œ, ์ถœ์—ฐ ํ•œ ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž "|" ์ง€์› ๋ฐ "|=" ์—…๋ฐ์ดํŠธ๋Š” ์‚ฌ์ „ ๋ณ‘ํ•ฉ์„ ์œ„ํ•ด ์ด์ „์— ์ œ์•ˆ๋œ {**d1, **d2} ๋ฐ dict.update ๋ฐฉ๋ฒ•์„ ๋ณด์™„ํ•ฉ๋‹ˆ๋‹ค.

    >>> x = {"key1": "x์˜ ๊ฐ’1", "key2": "x์˜ ๊ฐ’2"}
    >>> y = {"key2": "y์˜ ๊ฐ’2", "key3": "y์˜ ๊ฐ’3"}

    >>> x | ์™€์ด
    {'key1': 'x์˜ ๊ฐ’1', 'key2': 'y์˜ ๊ฐ’2', 'key3': 'y์˜ ๊ฐ’3'}

    >>> ์™€ | ์—‘์Šค
    {'key2': 'x์˜ ๊ฐ’2', 'key3': 'y์˜ ๊ฐ’3', 'key1': 'x์˜ ๊ฐ’1'}

  • ๋‚ด์žฅ๋œ ์œ ํ˜• ์ปฌ๋ ‰์…˜์—๋Š” ํƒ€์ดํ•‘ ๋ชจ๋“ˆ์—์„œ ๊ฐ€์ ธ์˜ค์ง€ ์•Š๊ณ ๋„ ๊ธฐ๋ณธ ์œ ํ˜•์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชฉ๋ก, ์‚ฌ์ „ ๋ฐ ํŠœํ”Œ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๊ฒƒ๋“ค. ํƒ€์ดํ•‘.List, ํƒ€์ดํ•‘.Dict ๋ฐ ํƒ€์ดํ•‘.Tuple ๋Œ€์‹  ์ด์ œ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ๊ทธ๋ƒฅ ๋ฆฌ์ŠคํŠธ, ๋”•์…”๋„ˆ๋ฆฌ, ํŠœํ”Œ๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค:

    def Greeting_all(names: list[str]) -> ์—†์Œ:
    ์ด๋ฆ„ ์†์˜ ์ด๋ฆ„:
    print("์•ˆ๋…•ํ•˜์„ธ์š”", ์ด๋ฆ„)

  • ์ œ๊ณต๋œ๋‹ค ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜์— ์ฃผ์„์„ ๋‹ฌ๊ธฐ ์œ„ํ•œ ์œ ์—ฐํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ฃผ์„์„ ์ฒจ๋ถ€ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด Annotated ์œ ํ˜•์ด ํƒ€์ดํ•‘ ๋ชจ๋“ˆ์— ์ถ”๊ฐ€๋˜์–ด ์ •์  ๋ถ„์„์ด๋‚˜ ๋Ÿฐํƒ€์ž„ ์ตœ์ ํ™”์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ๊ธฐ์กด ์œ ํ˜•์„ ํ™•์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ์—์„œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด include_extras ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ Typing.get_type_hints() ๋ฉ”์„œ๋“œ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    charType = Annotated[int, ctype("char")] UnsignedShort = Annotated[int, struct2.ctype('H')]

  • ํ†ค๋‹ค์šด ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ฌธ๋ฒ• ์š”๊ตฌ ์‚ฌํ•ญ - if ๋ฐ while ๋ธ”๋ก์— ์‚ฌ์šฉํ•˜๊ธฐ์— ์ ํ•ฉํ•œ ๋ชจ๋“  ํ‘œํ˜„์„ ์ด์ œ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด PyQt5 ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜๊ณ  ์ด ๋ชจ๋“ˆ์˜ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ๋‹จ์ˆœํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    ๊ทธ๊ฒƒ์€ :
    ๋ฒ„ํŠผ_0 = ๋ฒ„ํŠผ[0] @button_0.clicked.connect

    ์ด์ œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    @buttons[0].clicked.connect

  • ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ถ”๊ฐ€ ๋ชจ๋“ˆ ๊ตฌ์—ญ ์ •๋ณด, ์—ฌ๊ธฐ์—๋Š” IANA ์‹œ๊ฐ„๋Œ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

    >>> zoneinfo์—์„œ ZoneInfo ๊ฐ€์ ธ์˜ค๊ธฐ
    >>> datetime import datetime, timedelta์—์„œ
    >>> # ์—ฌ๋ฆ„ ์‹œ๊ฐ„
    >>> dt = datetime(2020, 10, 31, 12, tzinfo=ZoneInfo("America/Los_Angeles"))
    >>> ์ธ์‡„(dt)
    2020-10-31 12:00:00-07:00

    >>> dt.tzname()
    'PDT'

    >>> # ํ‘œ์ค€์‹œ
    >>> dt += timedelta(์ผ=7)
    >>> ์ธ์‡„(dt)
    2020-11-07 12:00:00-08:00

    >>> ์ธ์‡„(dt.tzname())
    PST

  • graphlib ๋ชจ๋“ˆ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„ ๊ทธ๋ž˜ํ”„์˜ ์œ„์ƒ ์ •๋ ฌ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์ œ์•ˆ๋จ ์ ‘๋‘์‚ฌ์™€ ์ค„ ๋์„ ์ œ๊ฑฐํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ• - str.removeprefix(prefix) ๋ฐ str.removesuffix(suffix). str, bytes, bytearray ๋ฐ collections.UserString ๊ฐ์ฒด์— ๋ฉ”์†Œ๋“œ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    >>> s = "ํ‘ธ๋ฐ”"
    >>> s.removeprefix("Foo")
    '์ˆ ์ง‘'

  • ๊ด€๋ จ๋œ ์ƒˆ๋กœ์šด ํŒŒ์„œ PEG (Parsing Expression Grammar), ํŒŒ์„œ๋ฅผ ๋Œ€์ฒดํ•จ ์—˜์—˜(1). ์ƒˆ๋กœ์šด ํŒŒ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด LL(1)์˜ ์ œํ•œ ์‚ฌํ•ญ์„ ์šฐํšŒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ผ๋ถ€ "ํ•ดํ‚น"์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ํŒŒ์„œ ์œ ์ง€ ๊ด€๋ฆฌ์— ๋“œ๋Š” ์ธ๊ฑด๋น„๋ฅผ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ ์ƒˆ ํŒŒ์„œ๋Š” ์ด์ „ ํŒŒ์„œ์™€ ๊ฑฐ์˜ ๋™์ผํ•œ ์ˆ˜์ค€์ด์ง€๋งŒ ์œ ์—ฐ์„ฑ ์ธก๋ฉด์—์„œ ํ›จ์”ฌ ์•ž์„œ ์žˆ์–ด ์ƒˆ๋กœ์šด ์–ธ์–ด ๊ธฐ๋Šฅ์„ ์„ค๊ณ„ํ•  ๋•Œ ๋” ์ž์œ ๋กญ๊ฒŒ ๋Š๋‚„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ํŒŒ์„œ ์ฝ”๋“œ๋Š” ํ˜„์žฌ ์œ ์ง€๋˜๋ฉฐ "-X oldparser" ํ”Œ๋ž˜๊ทธ ๋˜๋Š” "PYTHONOLDPARSER=1" ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜ํ™˜๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฆด๋ฆฌ์Šค 3.10์—์„œ๋Š” ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.
  • ์— ์˜ํ•ด ์ œ๊ณต PyState_FindModule ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“ˆ ์ƒํƒœ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋Œ€์‹  ์ง์ ‘ ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜๋œ ๋ชจ๋“ˆ์˜ ์ƒํƒœ์— ์•ก์„ธ์Šคํ•˜๋Š” C ํ™•์žฅ ๋ฉ”์„œ๋“œ์˜ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ์„ ํ†ตํ•ด ๋ชจ๋“ˆ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ฑฐ๋‚˜ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜์—ฌ C ๋ชจ๋“ˆ์˜ ์„ฑ๋Šฅ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“ˆ์„ ํด๋ž˜์Šค์™€ ์—ฐ๊ด€์‹œํ‚ค๊ธฐ ์œ„ํ•ด C ํ•จ์ˆ˜ PyType_FromModuleAndSpec()์ด ์ œ์•ˆ๋˜๊ณ , ๋ชจ๋“ˆ๊ณผ ํ•ด๋‹น ์ƒํƒœ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด C ํ•จ์ˆ˜ PyType_GetModule() ๋ฐ PyType_GetModuleState()๊ฐ€ ์ œ์•ˆ๋˜๋ฉฐ, ํด๋ž˜์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ •์˜๋œ C ํ•จ์ˆ˜ PyCMethod ๋ฐ METH_METHOD ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์“ฐ๋ ˆ๊ธฐ ์ˆ˜์ง‘๊ฐ€ ๋ฐฐ๋‹ฌ๋จ ์ข…๋ฃŒ์ž๊ฐ€ ์‹คํ–‰๋œ ํ›„์—๋„ ์™ธ๋ถ€์—์„œ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์žฌํ™œ์„ฑํ™”๋œ ๊ฐœ์ฒด๊ฐ€ ํฌํ•จ๋œ ์ž ๊ธˆ ์ปฌ๋ ‰์…˜์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€๋œ ๋ฐฉ๋ฒ• os.pidfd_open์ด๋ฅผ ํ†ตํ•ด Linux ์ปค๋„ ํ•˜์œ„ ์‹œ์Šคํ…œ "pidfd"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PID ์žฌ์‚ฌ์šฉ ์ƒํ™ฉ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(pidfd๋Š” ํŠน์ • ํ”„๋กœ์„ธ์Šค์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์ง€๋งŒ PID๋Š” ํ•ด๋‹น PID์™€ ์—ฐ๊ฒฐ๋œ ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋œ ํ›„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Œ) ).
  • ์œ ๋‹ˆ์ฝ”๋“œ ์‚ฌ์–‘์— ๋Œ€ํ•œ ์ง€์›์ด ๋ฒ„์ „ 13.0.0์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ œ๊ฑฐ๋จ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ Python ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ๋‹ค์‹œ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ.
  • ๋‚ด์žฅ ์œ ํ˜• range, tuple, set,frozenset, list ๋ฐ dict์˜ ์„ฑ๋Šฅ์ด ์ตœ์ ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„ C ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ๊ฐ์ฒด์— ๋” ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด Vectorcall ๋‹จ์ถ• ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • _abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, ์—ฐ์‚ฐ์ž, ๋ฆฌ์†Œ์Šค, ์‹œ๊ฐ„ ๋ฐ _weakref ๋ชจ๋“ˆ์ด ๋กœ๋“œ ์œ„์น˜๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋‹จ๊ณ„์˜ ์ดˆ๊ธฐํ™”.
  • ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋“ˆ audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios ๋ฐ zlib๋Š” ์ œํ•œ๋œ ์‚ฌ์šฉ์„ ์œ„ํ•ด ๋ณ€ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•ˆ์ •์ ์ธ ABI, ์ด๋Š” ๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ Python์— ๋Œ€ํ•œ ํ™•์žฅ ๋ชจ๋“ˆ ์–ด์…ˆ๋ธ”๋ฆฌ์˜ ์ž‘๋™์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค(๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ํ™•์žฅ ๋ชจ๋“ˆ์„ ๋‹ค์‹œ ๋นŒ๋“œํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ 3.9์šฉ์œผ๋กœ ์ปดํŒŒ์ผ๋œ ๋ชจ๋“ˆ์€ 3.10 ๋ถ„๊ธฐ์—์„œ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).
  • asyncio ๋ชจ๋“ˆ์€ ์ž ์žฌ์ ์ธ ๋ณด์•ˆ ๋ฌธ์ œ๋กœ ์ธํ•ด ์žฌ์‚ฌ์šฉ_์ฃผ์†Œ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค(Linux์—์„œ UDP์— SO_REUSEADDR์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ˆ˜์‹  ์†Œ์ผ“์„ UDP ํฌํŠธ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).
  • ์ƒˆ๋กœ์šด ์ตœ์ ํ™” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‹ ํ˜ธ ์ฒ˜๋ฆฌ๊ธฐ ์„ฑ๋Šฅ ํ–ฅ์ƒ, FreeBSD ํ™˜๊ฒฝ์—์„œ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค ๋ชจ๋“ˆ ์†๋„ ํ–ฅ์ƒ, ์ž„์‹œ ๋ณ€์ˆ˜ ํ• ๋‹น ์†๋„ ํ–ฅ์ƒ("for y in [expr" ํ‘œํ˜„์‹์— ๋ณ€์ˆ˜ ํ• ๋‹น) ]โ€๋Š” ์ด์ œ โ€œy = exprโ€ ") ํ‘œํ˜„์‹๋งŒํผ ์„ฑ๋Šฅ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ํ…Œ์ŠคํŠธ๋Š” ๋ณด์—ฌ ๋ถ„๊ธฐ 3.8์— ๋น„ํ•ด ์„ฑ๋Šฅ ์ €ํ•˜(์†๋„ ํ–ฅ์ƒ์€ write_local ๋ฐ write_deque ํ…Œ์ŠคํŠธ์—์„œ๋งŒ ๊ด€์ฐฐ๋จ):

    ํŒŒ์ด์ฌ ๋ฒ„์ „ 3.4 3.5 3.6 3.7 3.8 3.9
    โ€”โ€”โ€”โ€”โ€” โ€” โ€” โ€” โ€” โ€” โ€”

    ๋ณ€์ˆ˜ ๋ฐ ์†์„ฑ ์ฝ๊ธฐ ์•ก์„ธ์Šค:
    ์ฝ๊ธฐ_๋กœ์ปฌ 7.1 7.1 5.4 5.1 3.9 4.0
    read_nonlocal 7.1 8.1 5.8 5.4 4.4 4.8
    ์ฝ๊ธฐ_๊ธ€๋กœ๋ฒŒ 15.5 19.0 14.3 13.6 7.6 7.7
    ์ฝ๊ธฐ ๋‚ด์žฅ 21.1 21.6 18.5 19.0 7.5 7.7
    read_classvar_from_class 25.6 26.5 20.7 19.5 18.4 18.6
    read_classvar_from_instance 22.8 23.5 18.8 17.1 16.4 20.1
    read_instancevar 32.4 33.1 28.0 26.3 25.4 27.7
    read_instancevar_slots 27.8 31.3 20.8 20.8 20.2 24.5
    read_namedtuple 73.8 57.5 45.0 46.8 18.4 23.2
    read_bound๋ฐฉ๋ฒ• 37.6 37.9 29.6 26.9 27.7 45.9

    ๋ณ€์ˆ˜ ๋ฐ ์†์„ฑ ์“ฐ๊ธฐ ์•ก์„ธ์Šค:
    write_local 8.7 9.3 5.5 5.3 4.3 4.2
    write_nonlocal 10.5 11.1 5.6 5.5 4.7 4.9
    write_global 19.7 21.2 18.0 18.0 15.8 17.2
    write_classvar 92.9 96.0 104.6 102.1 39.2 43.2
    write_instancevar 44.6 45.8 40.0 38.9 35.5 40.7
    write_instancevar_slots 35.6 36.1 27.3 26.6 25.7 27.7

    ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ฝ๊ธฐ ์•ก์„ธ์Šค:
    ์ฝ๊ธฐ ๋ชฉ๋ก 24.2 24.5 20.8 20.8 19.0 21.1
    ์ฝ๊ธฐ_๋ฐํฌ 24.7 25.5 20.2 20.6 19.8 21.6
    read_dict 24.3 25.7 22.3 23.0 21.0 22.5
    read_strdict 22.6 24.3 19.5 21.2 18.9 21.6

    ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์“ฐ๊ธฐ ์•ก์„ธ์Šค:
    ์“ฐ๊ธฐ ๋ชฉ๋ก 27.1 28.5 22.5 21.6 20.0 21.6
    write_deque 28.7 30.1 22.7 21.8 23.5 23.2
    write_dict 31.4 33.3 29.3 29.2 24.7 27.8
    write_strdict 28.4 29.9 27.5 25.2 23.1 29.8

    ์Šคํƒ(๋˜๋Š” ํ) ์ž‘์—…:
    ๋ชฉ๋ก_์ถ”๊ฐ€_ํŒ 93.4 112.7 75.4 74.2 50.8 53.9
    deque_append_pop 43.5 57.0 49.4 49.2 42.5 45.5
    deque_append_popleft 43.7 57.3 49.7 49.7 42.8 45.5

    ํƒ€์ด๋ฐ ๋ฃจํ”„:
    ๋ฃจํ”„_์˜ค๋ฒ„ํ—ค๋“œ 0.5 0.6 0.4 0.3 0.3 0.3

  • ์‚ญ์ œ๋จ html.parser.HTMLParser์˜ unescape() ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•˜์—ฌ ์ด์ „ ๋ฆด๋ฆฌ์Šค์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  DeprecationWarning์ด ๋ฐœ์ƒํ•œ ๋งŽ์€ Python 2.7 ํ•จ์ˆ˜ ๋ฐ ๋ฉ”์„œ๋“œ,
    array.array์˜ tostring() ๋ฐ fromstring(), threading.Thread์˜ isAlive(), ElementTree์˜ getchildren() ๋ฐ getiterator(), sys.getcheckinterval(), sys.setcheckinterval(), asyncio.Task.current_task(), asyncio.Task.all_tasks(), base64.encodestring() ๋ฐ base64.decodestring().

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€