{"id":128,"date":"2020-11-29T08:23:00","date_gmt":"2020-11-29T08:23:00","guid":{"rendered":"http:\/\/www.kowanas.com\/coding\/?p=128"},"modified":"2022-07-16T06:16:19","modified_gmt":"2022-07-16T06:16:19","slug":"%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4","status":"publish","type":"post","link":"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/","title":{"rendered":"Start Python #1 Thread safe \uc2f1\uae00\ud1a4 \ud328\ud134"},"content":{"rendered":"\n<p>\uc2f1\uae00\ud1a4 \ud328\ud134 \uc124\uba85\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4. \uc2f1\uae00\ud1a4 \ud328\ud134\uc740 \ud074\ub798\uc2a4\uac00 \ub2e8 \ud558\ub098\ub9cc\uc758 \uc778\uc2a4\ud134\uc2a4\ub97c \uac16\ub3c4\ub85d \ubcf4\uc7a5\ud558\uace0 \uae00\ub85c\ubc8c \uc811\uadfc\uc774 \uac00\ub2a5\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4. The singleton pattern ensures class has only one instance, and provides a global point of access to it. <sup><a href=\"#footnote_0_128\" id=\"identifier_0_128\" class=\"footnote-link footnote-identifier-link\" title=\"Freeman Robson, Head First Design Patterns, O&rsquo;REILLY, 2014, p179\">1<\/a><\/sup><\/p>\n\n\n\n<p>\uc608\uc81c \ucf54\ub4dc\ub97c \ubcf4\uc2dc\ub824\uba74 <a href=\"https:\/\/youtu.be\/9HE_oG4feao\">\uc774 \ub9c1\ud06c\uc758 \uc601\uc0c1<\/a>\uc744 \ucc38\uc870\ud574\uc8fc\uc138\uc694.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc2f1\uae00\ud1a4 \ud328\ud134<\/h2>\n\n\n\n<p>\uc2f1\uae00\ud1a4 \ud328\ud134\uc740  GOF (Gang of Four)\uc774 \uc124\uba85\ud55c \ub514\uc790\uc778 \ud328\ud134\uc911\uc5d0 \ud558\ub098\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/11\/image-18.png\" alt=\"\uc2f1\uae00\ud1a4 \ud328\ud134 \ud074\ub798\uc2a4 \ub2e4\uc774\uc5b4\uadf8\ub7a8\" class=\"wp-image-122\" width=\"267\" height=\"149\"\/><\/figure>\n\n\n\n<p>\ud504\ub85c\uc81d\ud2b8\ub97c \uac1c\ubc1c\ud558\ub2e4\ubcf4\uba74 \ub2e8 \ud558\ub098\ub9cc \uc874\uc7ac\ud574\uc57c \ud558\ub294 Object\ub4e4\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc608\ub97c \ub4e4\uba74, \ub514\ubc14\uc774\uc2a4 \ub4dc\ub77c\uc774\ubc84\ub098 \ub370\uc774\ud130 \uc800\uc7a5\uc18c \uadf8\ub9ac\uace0 \ub85c\uae45\ub4f1\uc774 \uc788\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc800\ub294 \uc774\ub7f0 \uacbd\uc6b0 \uae00\ub85c\ubc8c \ubcc0\uc218\ubcf4\ub2e4 \uc2f1\uae00\ud1a4 \ud328\ud134\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc2f1\uae00\ud1a4\uc73c\ub85c \uc778\uc2a4\ud134\uc2a4\ub97c \uad00\ub9ac\ud574\uc8fc\uace0 \uc774 \ub610\ud55c Class\uc774\ub2c8 Method\ub4e4\uc744 \ucd94\uac00\ud560 \uc218 \uc788\uc5b4 \uc81c \ud504\ub85c\uc81d\ud2b8\uc758 \ucf54\ub4dc\uac00 \ud6e8\uc52c \uac04\uacb0\ud574\uc9c0\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub2e4\uc74c\uc740 \ud30c\uc774\uc36c\uc73c\ub85c \uc2f1\uae00\ud1a4 \ud328\ud134\uc744 \uad6c\ud604\ud55c \ucf54\ub4dc\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc800\ub294 \uac00\ub054 \uba40\ud2f0 \uc4f0\ub808\ub4dc\ub97c \uc0ac\uc6a9\ud558\ub294 \ud3b8\uc774\uc5b4\uc11c Thread Safe \ud558\uac8c \ub9cc\ub4e4\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ud30c\uc774\uc36c\ubcf4\ub2e4 \uc790\ubc14\ub4f1 \ub2e4\ub978 \uc5b8\uc5b4\uc5d0\uc11c\ub294 \ub354\ub354\uc6b1 Thread Safe\uac00 \ud544\uc218\uc774\ubbc0\ub85c \uc2f1\uae00\ud1a4 \ud328\ud134\uc5d0\ub294 \ubc18\ub4dc\uc2dc \uace0\ub824\ud574\uc57c \ud558\ub294 \uc0ac\ud56d\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Singleton.py<\/h2>\n\n\n\n<p>\uc778\uc2a4\ud134\uc2a4\ub97c \ub9cc\ub4e4\uacfc \uad00\ub9ac\ud558\ub294<code>Sington<\/code> type\uc744 \ub9cc\ub4e4\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uac1d\uccb4\uac00 \uc0dd\uc131\uc744 \ud638\ucd9c\ud558\uba74 <code>__call__<\/code>\uc774 \ubd88\ub9ac\uac8c \ub418\uace0 \uc0dd\uc131\ub41c \uc778\uc2a4\ud134\uc2a4\uac00 \uc5c6\uc73c\uba74 \uc0c8\ub85c \uc0dd\uc131\uc744 \ud558\uace0  \uc774\ubbf8 \uc0dd\uc131\ub41c\uac8c \uc788\uc73c\uba74 \ud574\ub2f9 \uc778\uc2a4\ud134\uc2a4\ub97c \ubc18\ud658\ud558\uc5ec \uc90d\ub2c8\ub2e4. <\/p>\n\n\n\n<p>\ubcc4\ub3c4\ub85c <code>metaclass<\/code>\uc640 <code>tyle<\/code>\uc740 \ub2e4\uc74c <a href=\"https:\/\/blog.ionelmc.ro\/2015\/02\/09\/understanding-python-metaclasses\/\">page<\/a>\uc5d0 \uc798 \uc124\uba85\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub098\uc911\uc5d0 \ud544\uc694\uc2dc \ub2e4\ub978 \uae00\uc5d0\uc11c \ucd94\uac00 \uc124\uba85\ud558\ub3c4\ub85d \ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from threading import Lock\n\nclass Singleton(type):\n    _instance = None\n    _lock = Lock()\n\n    def __call__(cls, *args, **kwargs):\n        with cls._lock:\n            if not cls._instance:\n                cls._instance = super().__call__(*args, **kwargs)\n        return cls._instance<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">SingletonClass.py<\/h2>\n\n\n\n<p>\ub2e4\uc74c\uc740 \uc2e4\uc81c \uc2f1\uae00\ud1a4\uc73c\ub85c \uc0dd\uc131\ub418\ub294 \ud074\ub798\uc2a4\ub85c \uc0dd\uc131\ud560\ub54c \uc778\uc790\ub85c \uc124\uc815\ud558\ub294 <code>name<\/code>\uc774\ub77c\ub294 \ubcc0\uc218\ub97c \uac16\ub3c4\ub85d \ud588\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uadf8\ub9ac\uace0 2\uac1c\uc758 \uc4f0\ub808\ub4dc\ub85c\ubd80\ud130 \uac01\uac01 <code>ACLASS<\/code>\uc640 <code>BCLASS<\/code>\ub77c\ub294 \uc774\ub984\uc73c\ub85c <code>SingletonClass(value)<\/code>\ub97c \ud558\ub3c4\ub85d \ud558\uc600\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from Singleton import Singleton\nfrom threading import Thread\n\nclass SingletonClass(metaclass=Singleton):\n    def __init__(self, name):\n        self.name = name\n\ndef run(value):\n    singleton = SingletonClass(value)\n    print(singleton.name)\n\nif __name__ == '__main__':\n    processa = Thread(target=run, args=('ACLASS',))\n    processb = Thread(target=run, args=('BCLASS',))\n    processa.start()\n    processb.start()<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Test Result<\/h2>\n\n\n\n<p>\uacb0\uacfc\ub294 \uc544\ub798\uc640 \uac19\uc774 <code>ACLASS<\/code>\ub9cc \ub450\ubc88 \ud504\ub9b0\ud2b8\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc989, \ub450\ubc88\uc9f8 \ud638\ucd9c\ud55c <code>SingletonClass('BCLASS')<\/code>\ub294 \uc778\uc2a4\ud134\uc2a4\uac00 \uc0dd\uc131\ub418\uc9c0 \uc54a\uace0 \ucc98\uc74c \uc0dd\uc131\ud588\ub358 \uc778\uc2a4\ud134\uc2a4\ub97c \ucc38\uc870\ud558\uac8c \ub418\uc5c8\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ACLASS\nACLASS<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><code><strong>Start Python<\/strong><\/code> series<\/h2>\n\n\n\n<p>\uc0c8\ub85c \ud504\ub85c\uadf8\ub798\ubc0d\uc744 \uc2dc\uc791\ud558\ub294 \ub9ce\uc740 \ubd84\ub4e4\uc774 Hello world!\ub97c \ucc0d\uace0 \ubb38\ubc95 \uacf5\ubd80\ub97c \ud558\ub294 \uac83\uc73c\ub85c \uc2dc\uc791\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ud558\uc9c0\ub9cc \uc2e4\uc81c \ud504\ub85c\uc81d\ud2b8\ub294 \ub2e4\uc591\ud55c \uae30\uc220\ub4e4\uc744 \uc694\uad6c\ud558\uac8c \ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uadf8\ub798\uc11c \uc81c\uac00 \uc2e4\uc81c \ud504\ub85c\uc81d\ud2b8\ub97c \ud558\uba74\uc11c \uc790\uc8fc \uacbd\ud5d8\ud558\ub294 \uac83\ub4e4\uc5d0 \ub300\ud574\uc11c \uc608\uc81c\ucf54\ub4dc\ub97c \uc900\ube44\ud558\uace0 \ub77c\uc774\ube0c\ub7ec\ub9ac\ud654\ud558\uba74\uc11c \uae00\uc744 \uc791\uc131\ud558\ub824\uace0 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uac01\uac01\uc758 \uac1c\ubc1c\uc790\ub4e4\uc740 \uac01\uae30\uc758 \ud658\uacbd\uacfc \ud504\ub85c\uc81d\ud2b8 \uaddc\ubaa8\ub97c \uac00\uc9c0\uace0 \uc788\uc5b4 Django\uac19\uc740 Framework\uc744 \uc0ac\uc6a9\ud558\uc9c0\ub294 \uc54a\uc744\uac83\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc81c\uac00 Python\uc73c\ub85c \ub300\uaddc\ubaa8\uc758 \ud504\ub85c\uc81d\ud2b8\ub97c \ud558\uc9c0\ub3c4 \uc54a\uc744 \ubfd0\ub354\ub7ec \uc0c8\ub85c \ud504\ub85c\uadf8\ub798\ubc0d\uc744 \uc2dc\uc791\ud558\uc2dc\ub294 \ubd84\ub4e4\uc774 \ub2f9\uc7a5 \ud544\uc694\ud560 \uac83 \uac19\uc9c0\ub294 \uc54a\uc544\uc11c \uc880 \ub354 Low level api\ub85c \uad6c\ud604\ud558\ub294 \uac83\uc73c\ub85c \uc9c4\ud589\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"has-vivid-green-cyan-color has-text-color\"><strong><em>\uc870\uc5b8\uc774\ub098 \ucd94\uac00 \uc9c8\ubb38\uc774 \uc788\uc73c\uba74 \ub2f5\uae00 \ub2ec\uc544\uc8fc\uc138\uc694.<\/em><\/strong><\/p>\n<ol class=\"footnotes\"><li id=\"footnote_0_128\" class=\"footnote\">Freeman Robson, Head First Design Patterns, O&#8217;REILLY, 2014, p179<span class=\"footnote-back-link-wrapper\"> [<a href=\"#identifier_0_128\" class=\"footnote-link footnote-back-link\">&#8617;<\/a>]<\/span><\/li><\/ol>","protected":false},"excerpt":{"rendered":"<p>\uc2f1\uae00\ud1a4 \ud328\ud134 \uc124\uba85\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4. \uc2f1\uae00\ud1a4 \ud328\ud134\uc740 \ud074\ub798\uc2a4\uac00 \ub2e8 \ud558\ub098\ub9cc\uc758 \uc778\uc2a4\ud134\uc2a4\ub97c \uac16\ub3c4\ub85d \ubcf4\uc7a5\ud558\uace0 \uae00\ub85c\ubc8c \uc811\uadfc\uc774 \uac00\ub2a5\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4. The singleton pattern ensures class has only one instance, and provides a global point of access to it. 1 \uc608\uc81c \ucf54\ub4dc\ub97c \ubcf4\uc2dc\ub824\uba74 \uc774 \ub9c1\ud06c\uc758 \uc601\uc0c1\uc744 \ucc38\uc870\ud574\uc8fc\uc138\uc694. \uc2f1\uae00\ud1a4 \ud328\ud134 \uc2f1\uae00\ud1a4 \ud328\ud134\uc740 GOF (Gang of Four)\uc774 \uc124\uba85\ud55c \ub514\uc790\uc778 \ud328\ud134\uc911\uc5d0 \ud558\ub098\uc785\ub2c8\ub2e4. &#8230; <a title=\"Start Python #1 Thread safe \uc2f1\uae00\ud1a4 \ud328\ud134\" class=\"read-more\" href=\"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/\" aria-label=\"Read more about Start Python #1 Thread safe \uc2f1\uae00\ud1a4 \ud328\ud134\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[25,26,28,27,29],"class_list":["post-128","post","type-post","status-publish","format-standard","hentry","category-13","tag-python","tag-singleton","tag-28","tag-27","tag-29"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Start Python #1 Thread safe \uc2f1\uae00\ud1a4 \ud328\ud134 - Kowana&#039;s coding<\/title>\n<meta name=\"description\" content=\"\uc2f1\uae00\ud1a4 \ud328\ud134 \uc740 GOF (Gang of Four)\uc774 \uc124\uba85\ud55c \ub514\uc790\uc778 \ud328\ud134\uc911\uc5d0 \ud558\ub098\uc785\ub2c8\ub2e4. \ud504\ub85c\uc81d\ud2b8\ub97c \uac1c\ubc1c\ud558\ub2e4\ubcf4\uba74 \ub2e8 \ud558\ub098\ub9cc \uc874\uc7ac\ud574\uc57c \ud558\ub294 Object\ub4e4\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc800\ub294 \uc774\ub7f0 \uacbd\uc6b0 \uae00\ub85c\ubc8c \ubcc0\uc218\ubcf4\ub2e4 \uc2f1\uae00\ud1a4 \ud328\ud134\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/\uc2f1\uae00\ud1a4-\ud328\ud134\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Start Python #1 Thread safe \uc2f1\uae00\ud1a4 \ud328\ud134 - Kowana&#039;s coding\" \/>\n<meta property=\"og:description\" content=\"\uc2f1\uae00\ud1a4 \ud328\ud134 \uc740 GOF (Gang of Four)\uc774 \uc124\uba85\ud55c \ub514\uc790\uc778 \ud328\ud134\uc911\uc5d0 \ud558\ub098\uc785\ub2c8\ub2e4. \ud504\ub85c\uc81d\ud2b8\ub97c \uac1c\ubc1c\ud558\ub2e4\ubcf4\uba74 \ub2e8 \ud558\ub098\ub9cc \uc874\uc7ac\ud574\uc57c \ud558\ub294 Object\ub4e4\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc800\ub294 \uc774\ub7f0 \uacbd\uc6b0 \uae00\ub85c\ubc8c \ubcc0\uc218\ubcf4\ub2e4 \uc2f1\uae00\ud1a4 \ud328\ud134\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/\uc2f1\uae00\ud1a4-\ud328\ud134\/\" \/>\n<meta property=\"og:site_name\" content=\"Kowana&#039;s coding\" \/>\n<meta property=\"article:published_time\" content=\"2020-11-29T08:23:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-16T06:16:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/11\/image-18.png\" \/>\n<meta name=\"author\" content=\"kowana\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"kowana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/\",\"url\":\"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/\",\"name\":\"Start Python #1 Thread safe \uc2f1\uae00\ud1a4 \ud328\ud134 - Kowana's coding\",\"isPartOf\":{\"@id\":\"https:\/\/www.kowanas.com\/coding\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/11\/image-18.png\",\"datePublished\":\"2020-11-29T08:23:00+00:00\",\"dateModified\":\"2022-07-16T06:16:19+00:00\",\"author\":{\"@id\":\"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/190c7dff713254da763d4fe295be98af\"},\"description\":\"\uc2f1\uae00\ud1a4 \ud328\ud134 \uc740 GOF (Gang of Four)\uc774 \uc124\uba85\ud55c \ub514\uc790\uc778 \ud328\ud134\uc911\uc5d0 \ud558\ub098\uc785\ub2c8\ub2e4. \ud504\ub85c\uc81d\ud2b8\ub97c \uac1c\ubc1c\ud558\ub2e4\ubcf4\uba74 \ub2e8 \ud558\ub098\ub9cc \uc874\uc7ac\ud574\uc57c \ud558\ub294 Object\ub4e4\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc800\ub294 \uc774\ub7f0 \uacbd\uc6b0 \uae00\ub85c\ubc8c \ubcc0\uc218\ubcf4\ub2e4 \uc2f1\uae00\ud1a4 \ud328\ud134\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/#primaryimage\",\"url\":\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/11\/image-18.png\",\"contentUrl\":\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/11\/image-18.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.kowanas.com\/coding\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Start Python #1 Thread safe \uc2f1\uae00\ud1a4 \ud328\ud134\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/#website\",\"url\":\"https:\/\/www.kowanas.com\/coding\/\",\"name\":\"Kowana's coding\",\"description\":\"\ucc9c\ucc9c\ud788 \ud55c\uac78\uc74c\uc529 \ud55c\uac78\uc74c\uc529 \ucf54\ub529\uc774 \ub300\uc138\ub780\ub2e4 \uc544\ub4e4\uc544\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.kowanas.com\/coding\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/190c7dff713254da763d4fe295be98af\",\"name\":\"kowana\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/80a89adb37a55d376afb969e327758fb?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/80a89adb37a55d376afb969e327758fb?s=96&d=mm&r=g\",\"caption\":\"kowana\"},\"url\":\"https:\/\/www.kowanas.com\/coding\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Start Python #1 Thread safe \uc2f1\uae00\ud1a4 \ud328\ud134 - Kowana's coding","description":"\uc2f1\uae00\ud1a4 \ud328\ud134 \uc740 GOF (Gang of Four)\uc774 \uc124\uba85\ud55c \ub514\uc790\uc778 \ud328\ud134\uc911\uc5d0 \ud558\ub098\uc785\ub2c8\ub2e4. \ud504\ub85c\uc81d\ud2b8\ub97c \uac1c\ubc1c\ud558\ub2e4\ubcf4\uba74 \ub2e8 \ud558\ub098\ub9cc \uc874\uc7ac\ud574\uc57c \ud558\ub294 Object\ub4e4\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc800\ub294 \uc774\ub7f0 \uacbd\uc6b0 \uae00\ub85c\ubc8c \ubcc0\uc218\ubcf4\ub2e4 \uc2f1\uae00\ud1a4 \ud328\ud134\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/\uc2f1\uae00\ud1a4-\ud328\ud134\/","og_locale":"en_US","og_type":"article","og_title":"Start Python #1 Thread safe \uc2f1\uae00\ud1a4 \ud328\ud134 - Kowana's coding","og_description":"\uc2f1\uae00\ud1a4 \ud328\ud134 \uc740 GOF (Gang of Four)\uc774 \uc124\uba85\ud55c \ub514\uc790\uc778 \ud328\ud134\uc911\uc5d0 \ud558\ub098\uc785\ub2c8\ub2e4. \ud504\ub85c\uc81d\ud2b8\ub97c \uac1c\ubc1c\ud558\ub2e4\ubcf4\uba74 \ub2e8 \ud558\ub098\ub9cc \uc874\uc7ac\ud574\uc57c \ud558\ub294 Object\ub4e4\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc800\ub294 \uc774\ub7f0 \uacbd\uc6b0 \uae00\ub85c\ubc8c \ubcc0\uc218\ubcf4\ub2e4 \uc2f1\uae00\ud1a4 \ud328\ud134\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.","og_url":"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/\uc2f1\uae00\ud1a4-\ud328\ud134\/","og_site_name":"Kowana's coding","article_published_time":"2020-11-29T08:23:00+00:00","article_modified_time":"2022-07-16T06:16:19+00:00","og_image":[{"url":"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/11\/image-18.png","type":"","width":"","height":""}],"author":"kowana","twitter_card":"summary_large_image","twitter_misc":{"Written by":"kowana","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/","url":"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/","name":"Start Python #1 Thread safe \uc2f1\uae00\ud1a4 \ud328\ud134 - Kowana's coding","isPartOf":{"@id":"https:\/\/www.kowanas.com\/coding\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/#primaryimage"},"image":{"@id":"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/#primaryimage"},"thumbnailUrl":"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/11\/image-18.png","datePublished":"2020-11-29T08:23:00+00:00","dateModified":"2022-07-16T06:16:19+00:00","author":{"@id":"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/190c7dff713254da763d4fe295be98af"},"description":"\uc2f1\uae00\ud1a4 \ud328\ud134 \uc740 GOF (Gang of Four)\uc774 \uc124\uba85\ud55c \ub514\uc790\uc778 \ud328\ud134\uc911\uc5d0 \ud558\ub098\uc785\ub2c8\ub2e4. \ud504\ub85c\uc81d\ud2b8\ub97c \uac1c\ubc1c\ud558\ub2e4\ubcf4\uba74 \ub2e8 \ud558\ub098\ub9cc \uc874\uc7ac\ud574\uc57c \ud558\ub294 Object\ub4e4\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc800\ub294 \uc774\ub7f0 \uacbd\uc6b0 \uae00\ub85c\ubc8c \ubcc0\uc218\ubcf4\ub2e4 \uc2f1\uae00\ud1a4 \ud328\ud134\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.","breadcrumb":{"@id":"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/#primaryimage","url":"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/11\/image-18.png","contentUrl":"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/11\/image-18.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.kowanas.com\/coding\/"},{"@type":"ListItem","position":2,"name":"Start Python #1 Thread safe \uc2f1\uae00\ud1a4 \ud328\ud134"}]},{"@type":"WebSite","@id":"https:\/\/www.kowanas.com\/coding\/#website","url":"https:\/\/www.kowanas.com\/coding\/","name":"Kowana's coding","description":"\ucc9c\ucc9c\ud788 \ud55c\uac78\uc74c\uc529 \ud55c\uac78\uc74c\uc529 \ucf54\ub529\uc774 \ub300\uc138\ub780\ub2e4 \uc544\ub4e4\uc544","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.kowanas.com\/coding\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/190c7dff713254da763d4fe295be98af","name":"kowana","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/80a89adb37a55d376afb969e327758fb?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/80a89adb37a55d376afb969e327758fb?s=96&d=mm&r=g","caption":"kowana"},"url":"https:\/\/www.kowanas.com\/coding\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/posts\/128","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/comments?post=128"}],"version-history":[{"count":3,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/posts\/128\/revisions"}],"predecessor-version":[{"id":481,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/posts\/128\/revisions\/481"}],"wp:attachment":[{"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/media?parent=128"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/categories?post=128"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/tags?post=128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}