I'm just beginning to get the idea of queue and threading.
I would welcome input on this exercise script:
from threading import Thread as T
from Queue import Queue as Q
from random import randint as R
import time
'''
Silly script exploring simple use of threadding.Thread and Queue.Queue
'''
q = Q()
now = time.time()
def one_up(queue):
while time.time() - now <= 20:
other_num = queue.get()
big_num = 5*other_num
print(" {}!?!?".format(other_num))
queue.put(big_num)
print("Oh yea, well I put {} in the queue!".format(big_num))
time.sleep(1)
print("{} is a BIG number, man. Wow. Look. We made a pyramid.".format(big_num))
a_num = R(1,10)
q.put(a_num)
print("I put {} in the queue.".format(a_num))
t = T(target=one_up, args=(q,))
t.start()
Which outputs something along the lines of:
I put 5 in the queue. 5!?!? Oh yea, well I put 25 in the queue! 25!?!? Oh yea, well I put 125 in the queue! 125!?!? Oh yea, well I put 625 in the queue! 625!?!? Oh yea, well I put 3125 in the queue! 3125!?!? Oh yea, well I put 15625 in the queue! 15625!?!? Oh yea, well I put 78125 in the queue! 78125!?!? Oh yea, well I put 390625 in the queue! 390625!?!? Oh yea, well I put 1953125 in the queue! 1953125!?!? Oh yea, well I put 9765625 in the queue! 9765625!?!? Oh yea, well I put 48828125 in the queue! 48828125!?!? Oh yea, well I put 244140625 in the queue! 244140625!?!? Oh yea, well I put 1220703125 in the queue! 1220703125!?!? Oh yea, well I put 6103515625 in the queue! 6103515625!?!? Oh yea, well I put 30517578125 in the queue! 30517578125!?!? Oh yea, well I put 152587890625 in the queue! 152587890625!?!? Oh yea, well I put 762939453125 in the queue! 762939453125!?!? Oh yea, well I put 3814697265625 in the queue! 3814697265625!?!? Oh yea, well I put 19073486328125 in the queue! 19073486328125!?!? Oh yea, well I put 95367431640625 in the queue! 95367431640625!?!? Oh yea, well I put 476837158203125 in the queue! 476837158203125 is a BIG number, man. Wow. Look. We made a pyramid.
1 Answer 1
Single-letter variable names are usually a bad practice, with few exceptions (loop counters, caught exception objects). Importing modules with single-letter names is very silly indeed. So don't do this:
from threading import Thread as T from Queue import Queue as Q from random import randint as R
Just stick to good old-fashioned:
from threading import Thread
from Queue import Queue
from random import randint
This is not a very interesting experiment with threading and a Queue. Check out the documentation, it's quite basic but much more interesting, and really using threading and a Queue.
-
\$\begingroup\$ The original title actually contained the word newbie, but was edited by admins. Sorry if I got your hopes up that it might be interesting. \$\endgroup\$MikeiLL– MikeiLL2014年10月02日 17:43:43 +00:00Commented Oct 2, 2014 at 17:43
-
2\$\begingroup\$ I hope I didn't offend you. I meant "interesting" not as "this is no fun for me get lost" but as "there's not a lot to review in this piece, but look, there's a cool doc about this, check it out you'll like it" ;-) \$\endgroup\$janos– janos2014年10月02日 17:57:53 +00:00Commented Oct 2, 2014 at 17:57
-
\$\begingroup\$ I think my ego did some into play a little bit. I have read through pymotw.com/2/Queue a few times, which offers a slightly more fleshed out version of the example in the Python docs. Learning it has felt like a slow process (pun intended). \$\endgroup\$MikeiLL– MikeiLL2014年10月02日 18:30:51 +00:00Commented Oct 2, 2014 at 18:30
'retrieve number from queue and replace it with number*5'
or something along those lines. \$\endgroup\$