Saltycrane logo

SaltyCrane Blog

Notes on Python, Django, and web development on Ubuntu Linux

    

Simplistic Python Thread example

Here is a simple Python example using the Thread object in the threading module.

import time
from threading import Thread

def myfunc(i):
    print "sleeping 5 sec from thread %d" % i
    time.sleep(5)
    print "finished sleeping from thread %d" % i

for i in range(10):
    t = Thread(target=myfunc, args=(i,))
    t.start()

Results:

sleeping 5 sec from thread 0
sleeping 5 sec from thread 1
sleeping 5 sec from thread 2
sleeping 5 sec from thread 3
sleeping 5 sec from thread 4
sleeping 5 sec from thread 5
sleeping 5 sec from thread 6
sleeping 5 sec from thread 7
sleeping 5 sec from thread 8
sleeping 5 sec from thread 9

...and 5 seconds later:

finished sleeping from thread 0
finished sleeping from thread 1
finished sleeping from thread 2
finished sleeping from thread 3
finished sleeping from thread 4
finished sleeping from thread 5
finished sleeping from thread 6
finished sleeping from thread 7
finished sleeping from thread 8
finished sleeping from thread 9

18 Comments — feed icon Comments feed for this post


#1 Tomek commented on 2009-05-24:

Cool ;) I like such simplistic examples. THX.

Tomek


#2 Eliot commented on 2009-05-24:

Tomek, heh, sometimes I do too.


#3 Oleg Tarasenko commented on 2009-09-10:

I also like the example.

I tuned it a little bit, so can use like a very simple load testing tool. E.g. if you need to generate few thousands of request.

import    urllib2                                                                                                                              
from threading import  Thread                                                                                       
def btl_test():                                                                                                                                 while 1:                                                                            
   page = urllib2.urlopen("example.com")

for i in range(120):                                                                                                                        
       t = Thread(target = btl_test)                                                                                                           
        t.start()

#4 Dankoozy commented on 2009-11-22:

Nice ... ssssssssssss very useful


#5 Bino commented on 2009-12-09:

Hi Elliot and all .. That realy great impact example.

Just one question, at line -->

t = Thread(target=myfunc, args=(i,))

Why there is a "comma" after "i" while there is only single paramater ? is it a must ?

Sincerely -bino-


#6 Eliot commented on 2009-12-09:

Oleg,
That looks like a cool example. Thanks!

Bino,
I gave it a quick try, and it looks like the comma is required.

The Thread object expects a tuple for the args argument. Since the operator for forming tuples is the comma and not the parentheses, a comma is required for a tuple of one item. See here for more info about that.


#7 khanal commented on 2012-03-29:

Hi Elliot and all .. That realy great impact example.

Just one question, at line -->

t = Thread(target=myfunc, args=(i,))

Why there is a "comma" after "i" while there >is only single paramater ? is it a must ?

Sincerely -bino-

bino, the ',' after is necessary here since the argument (or the set of arguments) is a tuple. remember (tuple,) [list,] {dictionary,}

in the above types, a comma is not mandated after the last element unless it only has a single element. So, you would not have to type list = [1,2,] but you would have to type list = [1,] or it would not be a list. Why make a list with one element? Well, you could always append to a list iff it IS a list.

ps. The reason I chose list instead of tuple is that the word list seems to naturally make sense in this explanation.


#8 Hopping Bunny commented on 2012-03-29:

I finally broke in to that exclusive world of threads, thanks to your example. THANKS A TONNE !!!!!!!!


#9 Eliot commented on 2012-03-30:

khanal: The comma is only required for tuples. Single item lists and dicts don't require a comma.


#10 sadashiv thota commented on 2012-05-03:

very useful example thanks a lot...................


#11 vijay commented on 2012-05-11:

very helpful..


#12 Ben commented on 2012-08-31:

what happen if i get this kind of things :

jsb.lib.threads:98 start_new_thread | .usr.lib.python2.7.threading:495 start | [HTML_REMOVED]: can't start new thread

threads - thread space is exhausted - can't start thread


#13 love kumar commented on 2012-12-23:

Dear sir, I am new to python, and i tried several examples , now i am looking for something in threading and multithreading, i already search on web but only found how to print thread number and timing of thread execution, i am looking for some thing where i can use thread with my own programs and also some basics of threading with details. Thank you in advance. Regards


#14 james commented on 2013-06-26:

#9 Eliot commented on 2012-03-30:
khanal: The comma is only required for tuples. Single item lists and dicts don't require a comma.

Note: parenthesis are also for grouping Boolean expressions and math.


#15 aucgoillk commented on 2013-11-27:

canada goose jacket outlet storecanada goose jacket outlet store torontocanada goose jacket outlet stores ilss135 [HTML_REMOVED]Canada Goose Femme[HTML_REMOVED] ioye221 [HTML_REMOVED]Canada Goose Outlet[HTML_REMOVED] canada goose jacket outlet torontocanada goose jacket parka;[HTML_REMOVED]canada goose parkas online[HTML_REMOVED] canada goose jacket plus sizecanada goose jacket price.omoqj6355 [HTML_REMOVED]Cheap Canada Goose[HTML_REMOVED] canada goose jacket price for womencanada goose jacket price in torontocanada goose jacket price listcanada goose jacket price list canadacanada goose jacket price range [HTML_REMOVED]Cheap Canada Goose[HTML_REMOVED] canada goose jacket price torontocanada goose jacket prices.qris513 [HTML_REMOVED]Discount canada goose sale[HTML_REMOVED] mkbvx5341 [HTML_REMOVED]canada goose milano[HTML_REMOVED] canada goose jacket prices canadacanada goose jacket prices in toronto.

http://horaproperty.ie/node/2302001 http://phpfoxtemplates.ceofox.com/index.php?do=/forum/thread/25238/gk-cheap-ugg-ugg-classic-tall-boots-black-size-8-cgk/ http://www.calvarysf.com/node/17344 http://fitnessandathletics.com/node/348507 http://recoveringfromchemo.com/node/38455 http://planeta-sochi.com/?q=node/40513


#16 Fellow commented on 2014-01-18:

groovy. but on my setup the 'finished' notifications came crashing back all jumbled up. some of them on the same line :o

i put a tiny delay in the for loop and it organized them to all arrive back in order like good little boys and girls:)


#17 cchliu commented on 2014-06-22:

Really love this kind of small examples to get things started~~ Thanks a lot!

BTW: when I tried the code, the "finished results" are not nicely printed in order, kind of in a random way like:

finished thread 0
 finished thread 2
finished thread 1finished thread 3
finished thread 7

finished thread 4
finished thread 5
finished thread 9finished thread 6finished thread 8

#18 MorrisNice commented on 2014-09-24:

Hi I want to share with you news! In the book the bank account for one million dollars is ciphered!

[HTML_REMOVED] The world was shaken by two terrible events. The Unknown force stole two sacred stones – the Black Stone of the Kaaba and the Anointing Stone. But God's hiding the third one in his hand…

http://www.7777777fortune7777777.com/

A desperate trek through the desert at Khufu . . . the discovery of an ancient treasure room, long since ransacked . . . a scar-faced priest, never without his little book and stone cross . . . a young boy, vanished from the beach . . . a pair of special-ops veterans, now in law enforcement . . . an inveterate fortuneseeker, reunited with the Cambodian goddess who had once rescued him from death . . . and a beautiful woman--pregnant and in the spring of life--who seeks to know who, or what, has taken her husband from this earth. The truth, like a gossamer web, enshrouds the path toward a stone whose origin is the birth of history; one of three such stones that, when at last brought together, will unleash the hordes of evil upon this mortal realm. All is intertwined, though the fact is not clear to them. The relationship is only discerned by the one whose awareness is not of this dimension; a green-eyed demon that blithely butchers anyone who happens to cross its path. It is called the Essence, and it will make your death a delight for the hounds of Hell. Thus the lonely quest of an aging priest meets that of an adventurer, two ex-commandos and a Creole widow. If they do not somehow meet, and function as no other team could, the world as we know it will end in an ocean of blood. In this spine-tingling thriller, "The Khufu Equation," the magic that transcends time is brought into ingenious play against a backdrop of intrigue, innocence and bold sexuality. It's the story of people from vastly different paths who must battle for their souls against a monster of indomitable power. What is the secret, and what does the monster want? Who can stop it? Find out . . . if you dare . . . in the teeth-chattering pages of this excellent new novel by the young Russian novelist Rail Sharif. http://www.7777777fortune7777777.com/ ... Add: 23.09.2014 16:15 has forgotten to add reference: [HTML_REMOVED]terrible book[HTML_REMOVED]

Post a comment

Required
Required, but not displayed
Optional

Format using Markdown. (No HTML.)
  • Code blocks: prefix each line by at least 4 spaces or 1 tab (and a blank line before and after)
  • Code span: surround with backticks
  • Blockquotes: prefix lines to be quoted with >
  • Links: <URL>
  • Links w/ description: [description](URL)
Created with Django | Hosted by Linode