change imports and other references. Closes #2925.
===========================================
.. module:: Queue
- :synopsis: Old name for the queue module.
-
-.. module:: queue
:synopsis: A synchronized queue class.
.. note::
- The :mod:`Queue` module has been renamed to :mod:`queue` in Python 3.0. It
- is importable under both names in Python 2.6 and the rest of the 2.x series.
+ The :mod:`Queue` module has been renamed to :mod:`queue` in Python 3.0. The
+ :term:`2to3` tool will automatically adapt imports when converting your
+ sources to 3.0.
-The :mod:`queue` module implements multi-producer, multi-consumer queues.
+The :mod:`Queue` module implements multi-producer, multi-consumer queues.
It is especially useful in threaded programming when information must be
exchanged safely between multiple threads. The :class:`Queue` class in this
module implements all the required locking semantics. It depends on the
the entries are kept sorted (using the :mod:`heapq` module) and the
lowest valued entry is retrieved first.
-The :mod:`queue` module defines the following classes and exceptions:
+The :mod:`Queue` module defines the following classes and exceptions:
.. class:: Queue(maxsize)
-------------
Queue objects (:class:`Queue`, :class:`LifoQueue`, or :class:`PriorityQueue`)
-provide the public methods described below.
+provide the public methods described below.
.. method:: Queue.qsize()
Example of how to wait for enqueued tasks to be completed::
- def worker():
- while True:
- item = q.get()
- do_work(item)
- q.task_done()
+ def worker():
+ while True:
+ item = q.get()
+ do_work(item)
+ q.task_done()
- q = Queue()
- for i in range(num_worker_threads):
+ q = Queue()
+ for i in range(num_worker_threads):
t = Thread(target=worker)
t.setDaemon(True)
- t.start()
+ t.start()
for item in source():
- q.put(item)
+ q.put(item)
q.join() # block until all tasks are done
This module constructs higher-level threading interfaces on top of the lower
level :mod:`thread` module.
-See also the :mod:`mutex` and :mod:`queue` modules.
+See also the :mod:`mutex` and :mod:`Queue` modules.
The :mod:`dummy_threading` module is provided for situations where
:mod:`threading` cannot be used because :mod:`thread` is missing.
If no expressions are present, :keyword:`raise` re-raises the last exception
that was active in the current scope. If no exception is active in the current
scope, a :exc:`TypeError` exception is raised indicating that this is an error
-(if running under IDLE, a :exc:`queue.Empty` exception is raised instead).
+(if running under IDLE, a :exc:`Queue.Empty` exception is raised instead).
Otherwise, :keyword:`raise` evaluates the expressions to get three objects,
using ``None`` as the value of omitted expressions. The first two objects are
The :mod:`repr` module provides a version of :func:`repr` customized for
abbreviated displays of large or deeply nested containers::
- >>> import repr
+ >>> import repr
>>> repr.repr(set('supercalifragilisticexpialidocious'))
"set(['a', 'c', 'd', 'e', 'f', 'g', ...])"
class AsyncZip(threading.Thread):
def __init__(self, infile, outfile):
- threading.Thread.__init__(self)
+ threading.Thread.__init__(self)
self.infile = infile
self.outfile = outfile
def run(self):
While those tools are powerful, minor design errors can result in problems that
are difficult to reproduce. So, the preferred approach to task coordination is
to concentrate all access to a resource in a single thread and then use the
-:mod:`queue` module to feed that thread with requests from other threads.
-Applications using :class:`Queue` objects for inter-thread communication and
-coordination are easier to design, more readable, and more reliable.
+:mod:`Queue` module to feed that thread with requests from other threads.
+Applications using :class:`Queue.Queue` objects for inter-thread communication
+and coordination are easier to design, more readable, and more reliable.
.. _tut-logging:
results in decimal floating point and binary floating point. The difference
becomes significant if the results are rounded to the nearest cent::
- >>> from decimal import *
+ >>> from decimal import *
>>> Decimal('0.70') * Decimal('1.05')
Decimal("0.7350")
>>> .70 * 1.05
- 0.73499999999999999
+ 0.73499999999999999
The :class:`Decimal` result keeps a trailing zero, automatically inferring four
place significance from multiplicands with two place significance. Decimal
>>> sum([Decimal('0.1')]*10) == Decimal('1.0')
True
>>> sum([0.1]*10) == 1.0
- False
+ False
The :mod:`decimal` module provides arithmetic with as much precision as needed::
used to hold character data.
(Contributed by Achim Gaedke; :issue:`1137`.)
-* The :mod:`queue` module now provides queue classes that retrieve entries
+* The :mod:`Queue` module now provides queue classes that retrieve entries
in different orders. The :class:`PriorityQueue` class stores
queued items in a heap and retrieves them in priority order,
and :class:`LifoQueue` retrieves the most recently added entries first,
import struct
import cPickle as pickle
import threading
-import queue
+import Queue
import traceback
import copy_reg
import types
#----------------- end class RPCServer --------------------
objecttable = {}
-request_queue = queue.Queue(0)
-response_queue = queue.Queue(0)
+request_queue = Queue.Queue(0)
+response_queue = Queue.Queue(0)
class SocketIO(object):
# send queued response if there is one available
try:
qmsg = response_queue.get(0)
- except queue.Empty:
+ except Queue.Empty:
pass
else:
seq, response = qmsg
import traceback
import thread
import threading
-import queue
+import Queue
import CallTips
import AutoComplete
continue
try:
seq, request = rpc.request_queue.get(block=True, timeout=0.05)
- except queue.Empty:
+ except Queue.Empty:
continue
method, args, kwargs = request
ret = method(*args, **kwargs)
self.check_all("configparser")
self.check_all("Cookie")
self.check_all("MimeWriter")
- self.check_all("queue")
+ self.check_all("Queue")
self.check_all("SimpleHTTPServer")
self.check_all("SocketServer")
self.check_all("StringIO")
"""
import dummy_thread as _thread
import time
-import queue
+import Queue
import random
import unittest
from test import test_support
"""Use to test _thread.start_new_thread() passes args properly."""
queue.put((arg1, arg2))
- testing_queue = queue.Queue(1)
+ testing_queue = Queue.Queue(1)
_thread.start_new_thread(arg_tester, (testing_queue, True, True))
result = testing_queue.get()
self.failUnless(result[0] and result[1],
queue.put(_thread.get_ident())
thread_count = 5
- testing_queue = queue.Queue(thread_count)
+ testing_queue = Queue.Queue(thread_count)
if test_support.verbose:
print
print "*** Testing multiple thread creation "\
class TestStdlibRenames(unittest.TestCase):
- renames = {'Queue': 'queue',
- 'ConfigParser': 'configparser',
- }
+ renames = {'ConfigParser': 'configparser'}
def check_rename(self, module_name, new_module_name):
"""Make sure that:
# Some simple queue module tests, plus some failure conditions
# to ensure the Queue locks remain stable.
-import queue
+import Queue
import sys
import threading
import time
try:
q.put("full", block=0)
self.fail("Didn't appear to block with a full queue")
- except queue.Full:
+ except Queue.Full:
pass
try:
q.put("full", timeout=0.01)
self.fail("Didn't appear to time-out with a full queue")
- except queue.Full:
+ except Queue.Full:
pass
# Test a blocking put
self.do_blocking_test(q.put, ("full",), q.get, ())
try:
q.get(block=0)
self.fail("Didn't appear to block with an empty queue")
- except queue.Empty:
+ except Queue.Empty:
pass
try:
q.get(timeout=0.01)
self.fail("Didn't appear to time-out with an empty queue")
- except queue.Empty:
+ except Queue.Empty:
pass
# Test a blocking get
self.do_blocking_test(q.get, (), q.put, ('empty',))
class QueueTest(BaseQueueTest):
- type2test = queue.Queue
+ type2test = Queue.Queue
class LifoQueueTest(BaseQueueTest):
- type2test = queue.LifoQueue
+ type2test = Queue.LifoQueue
class PriorityQueueTest(BaseQueueTest):
- type2test = queue.PriorityQueue
+ type2test = Queue.PriorityQueue
class FailingQueueException(Exception):
pass
-class FailingQueue(queue.Queue):
+class FailingQueue(Queue.Queue):
def __init__(self, *args):
self.fail_next_put = False
self.fail_next_get = False
- queue.Queue.__init__(self, *args)
+ Queue.Queue.__init__(self, *args)
def _put(self, item):
if self.fail_next_put:
self.fail_next_put = False
raise FailingQueueException, "You Lose"
- return queue.Queue._put(self, item)
+ return Queue.Queue._put(self, item)
def _get(self):
if self.fail_next_get:
self.fail_next_get = False
raise FailingQueueException, "You Lose"
- return queue.Queue._get(self)
+ return Queue.Queue._get(self)
class FailingQueueTest(unittest.TestCase, BlockingTestMixin):
import thread, threading
import time
import traceback
-import queue
+import Queue
import sys
import os
import array
self.server_ready = threading.Event()
self.client_ready = threading.Event()
self.done = threading.Event()
- self.queue = queue.Queue(1)
+ self.queue = Queue.Queue(1)
# Do some munging to start the client test.
methodname = self.id()
super(type) Create an unbound super object. Used to call cooperative
superclass methods.
sum(sequence, Add the values in the sequence and return the sum.
- [start])
+ [start])
tuple(sequence) Creates a tuple with same elements as sequence. If already
a tuple, return itself (not a copy).
Returns a type object [see module types] representing
pyexpat Interface to the Expay XML parser.
py_compile Routine to "compile" a .py file to a .pyc file.
pyclbr Parse a Python file and retrieve classes and methods.
-queue A multi-producer, multi-consumer queue.
+Queue A multi-producer, multi-consumer queue.
quopri Conversions to/from quoted-printable transport encoding.
rand Don't use unless you want compatibility with C's rand().
random Random variable generators
import websucker
import os
import threading
-import queue
+import Queue
import time
VERBOSE = 2
def go(self, event=None):
if not self.msgq:
- self.msgq = queue.Queue(0)
+ self.msgq = Queue.Queue(0)
self.check_msgq()
if not self.sucker:
self.sucker = SuckerThread(self.msgq)