{"id":12339,"date":"2018-12-02T22:12:49","date_gmt":"2018-12-02T16:42:49","guid":{"rendered":"http:\/\/pratikkataria.com\/blog\/?p=12339"},"modified":"2018-12-02T22:28:36","modified_gmt":"2018-12-02T16:58:36","slug":"python-using-thread-in-a-subclass","status":"publish","type":"post","link":"https:\/\/pratikkataria.com\/blog\/python-using-thread-in-a-subclass\/","title":{"rendered":"Python &#8211;  using Thread in a Subclass"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"background-color: #ffffff;background-position: center center;background-repeat: no-repeat;padding-top:10px;padding-right:10px;padding-bottom:10px;padding-left:10px;margin-bottom: 0px;margin-top: 0px;border-width: 0px 0px 0px 0px;border-color:#eae9e9;border-style:solid;\" ><div class=\"fusion-builder-row fusion-row\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-one-full fusion-column-first fusion-column-last\" style=\"margin-top:0px;margin-bottom:20px;\"><div class=\"fusion-column-wrapper fusion-flex-column-wrapper-legacy\" style=\"background-position:left top;background-repeat:no-repeat;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover;padding: 0px 0px 0px 0px;\"><div class=\"fusion-text fusion-text-1\"><h2>Implement a New Thread Using the Threading Module<\/h2>\n<ul>\n<li>Define a new subclass of the Thread class<\/li>\n<li>Override the __init__(self [, args]) method to add additional arguments<\/li>\n<li>Override the run(self [,args]) method to implement what the thread should do when it is started.<\/li>\n<li>When this is done, you can start a new thread by invoking the start method which will in turn call the run method<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">import threading\r\nimport time\r\n\r\nexit_flag = 0\r\n\r\nclass myThread(threading.Thread):\r\n    def __init__(self, threadId, name, counter):\r\n        threading.Thread.__init__(self)\r\n        self.threadId = threadId\r\n        self.name = name\r\n        self.counter = counter\r\n\r\n    def run(self):\r\n        print(\"Starting \" + self.name  + \"\\n\")\r\n        print_time(self.name, self.counter, 5)\r\n        print(\"Exiting \" + self.name + \"\\n\")\r\n\r\n\r\ndef print_time(threadName, delay, counter):\r\n    while counter:\r\n        if exit_flag:\r\n            thread.exit()\r\n        time.sleep(delay)\r\n        print(\"%s : %s\" % (threadName, time.ctime(time.time())))\r\n        counter -= 1\r\n\r\n# main program\r\nif __name__ == '__main__':\r\n    # create two threads\r\n\r\n    thread1 = myThread(1, \"thread-1\", 1)\r\n    thread2 = myThread(2, \"thread-2\", 2)\r\n\r\n    thread1.start()\r\n    thread2.start()\r\n\r\n    thread1.join()\r\n    thread2.join()\r\n\r\n    print(\"Exiting main thread\")<\/pre>\n<ul>\n<li>The threading module is the preferred module for creating and managing threads.<\/li>\n<li>Each thread is represented by a class that extends the thread class and overrides its run method.<\/li>\n<li>Then this run method becomes the starting point of the thread.<\/li>\n<li>Calling the constructor of thread class is mandatory.<\/li>\n<li>Using it, we can redefine some properties like name or group of the thread.<\/li>\n<li>The thread is placed in active state at the call to start method and remains there until it ends the run method or you throw an unhandled exception<\/li>\n<\/ul>\n<h2>Output<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Starting thread-1\r\n\r\nStarting thread-2\r\n\r\nthread-1 : Sun Dec  2 22:11:04 2018\r\nthread-2 : Sun Dec  2 22:11:05 2018\r\nthread-1 : Sun Dec  2 22:11:05 2018\r\nthread-1 : Sun Dec  2 22:11:06 2018\r\nthread-2 : Sun Dec  2 22:11:07 2018\r\nthread-1 : Sun Dec  2 22:11:07 2018\r\nthread-1 : Sun Dec  2 22:11:08 2018\r\nExiting thread-1\r\n\r\nthread-2 : Sun Dec  2 22:11:09 2018\r\nthread-2 : Sun Dec  2 22:11:11 2018\r\nthread-2 : Sun Dec  2 22:11:13 2018\r\nExiting thread-2\r\n\r\nExiting main thread<\/pre>\n<\/div><div class=\"fusion-clearfix\"><\/div><\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":12335,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[212,38],"tags":[218,213,217],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.6.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Python - using Thread in a Subclass - TechAmass<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/pratikkataria.com\/blog\/python-using-thread-in-a-subclass\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python - using Thread in a Subclass - TechAmass\" \/>\n<meta property=\"og:url\" content=\"https:\/\/pratikkataria.com\/blog\/python-using-thread-in-a-subclass\/\" \/>\n<meta property=\"og:site_name\" content=\"TechAmass\" \/>\n<meta property=\"article:published_time\" content=\"2018-12-02T16:42:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-12-02T16:58:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pratikkataria.com\/blog\/wp-content\/uploads\/2018\/12\/python-coding-programming.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"1067\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:creator\" content=\"@PratikPKataria\" \/>\n<meta name=\"twitter:site\" content=\"@PratikPKataria\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"3 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/pratikkataria.com\/blog\/#website\",\"url\":\"https:\/\/pratikkataria.com\/blog\/\",\"name\":\"TechAmass\",\"description\":\"Pratik&#039;s blog\",\"publisher\":{\"@id\":\"https:\/\/pratikkataria.com\/blog\/#\/schema\/person\/ef09a6ee5cb751524bc4c92454c59412\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/pratikkataria.com\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/pratikkataria.com\/blog\/python-using-thread-in-a-subclass\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/pratikkataria.com\/blog\/wp-content\/uploads\/2018\/12\/python-coding-programming.jpg\",\"width\":1600,\"height\":1067},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/pratikkataria.com\/blog\/python-using-thread-in-a-subclass\/#webpage\",\"url\":\"https:\/\/pratikkataria.com\/blog\/python-using-thread-in-a-subclass\/\",\"name\":\"Python - using Thread in a Subclass - TechAmass\",\"isPartOf\":{\"@id\":\"https:\/\/pratikkataria.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/pratikkataria.com\/blog\/python-using-thread-in-a-subclass\/#primaryimage\"},\"datePublished\":\"2018-12-02T16:42:49+00:00\",\"dateModified\":\"2018-12-02T16:58:36+00:00\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/pratikkataria.com\/blog\/python-using-thread-in-a-subclass\/\"]}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/pratikkataria.com\/blog\/python-using-thread-in-a-subclass\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/pratikkataria.com\/blog\/python-using-thread-in-a-subclass\/#webpage\"},\"author\":{\"@id\":\"https:\/\/pratikkataria.com\/blog\/#\/schema\/person\/ef09a6ee5cb751524bc4c92454c59412\"},\"headline\":\"Python &#8211; using Thread in a Subclass\",\"datePublished\":\"2018-12-02T16:42:49+00:00\",\"dateModified\":\"2018-12-02T16:58:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/pratikkataria.com\/blog\/python-using-thread-in-a-subclass\/#webpage\"},\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/pratikkataria.com\/blog\/#\/schema\/person\/ef09a6ee5cb751524bc4c92454c59412\"},\"image\":{\"@id\":\"https:\/\/pratikkataria.com\/blog\/python-using-thread-in-a-subclass\/#primaryimage\"},\"keywords\":\"parallel programming,python,threads\",\"articleSection\":\"Python,Tech\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/pratikkataria.com\/blog\/python-using-thread-in-a-subclass\/#respond\"]}]},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/pratikkataria.com\/blog\/#\/schema\/person\/ef09a6ee5cb751524bc4c92454c59412\",\"name\":\"Pratik Kataria\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/pratikkataria.com\/blog\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/pratikkataria.com\/blog\/wp-content\/uploads\/2020\/02\/kpratik_sq.jpg\",\"width\":512,\"height\":512,\"caption\":\"Pratik Kataria\"},\"logo\":{\"@id\":\"https:\/\/pratikkataria.com\/blog\/#personlogo\"},\"description\":\"Pratik Kataria is currently learning Springboot and Hibernate. Technologies known and worked on: C\/C++, Java, Python, JavaScript, HTML, CSS, Wordpress, Angular, Ionic, MongoDB, SQL and Android. Softwares known and worked on: Adobe Photoshop, Adobe Illustrator and Adobe After Effects.\",\"sameAs\":[\"https:\/\/pratikkataria.com\/\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","amp_enabled":true,"acf":[],"_links":{"self":[{"href":"https:\/\/pratikkataria.com\/blog\/wp-json\/wp\/v2\/posts\/12339"}],"collection":[{"href":"https:\/\/pratikkataria.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pratikkataria.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pratikkataria.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pratikkataria.com\/blog\/wp-json\/wp\/v2\/comments?post=12339"}],"version-history":[{"count":4,"href":"https:\/\/pratikkataria.com\/blog\/wp-json\/wp\/v2\/posts\/12339\/revisions"}],"predecessor-version":[{"id":12343,"href":"https:\/\/pratikkataria.com\/blog\/wp-json\/wp\/v2\/posts\/12339\/revisions\/12343"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pratikkataria.com\/blog\/wp-json\/wp\/v2\/media\/12335"}],"wp:attachment":[{"href":"https:\/\/pratikkataria.com\/blog\/wp-json\/wp\/v2\/media?parent=12339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pratikkataria.com\/blog\/wp-json\/wp\/v2\/categories?post=12339"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pratikkataria.com\/blog\/wp-json\/wp\/v2\/tags?post=12339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}