mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Queue renaming reversal part 3: move module into place and
change imports and other references. Closes #2925.
This commit is contained in:
parent
8107290fa1
commit
a6168f9e0a
15 changed files with 55 additions and 59 deletions
|
@ -2,17 +2,15 @@
|
||||||
===========================================
|
===========================================
|
||||||
|
|
||||||
.. module:: Queue
|
.. module:: Queue
|
||||||
:synopsis: Old name for the queue module.
|
|
||||||
|
|
||||||
.. module:: queue
|
|
||||||
:synopsis: A synchronized queue class.
|
:synopsis: A synchronized queue class.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
The :mod:`Queue` module has been renamed to :mod:`queue` in Python 3.0. It
|
The :mod:`Queue` module has been renamed to :mod:`queue` in Python 3.0. The
|
||||||
is importable under both names in Python 2.6 and the rest of the 2.x series.
|
: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
|
It is especially useful in threaded programming when information must be
|
||||||
exchanged safely between multiple threads. The :class:`Queue` class in this
|
exchanged safely between multiple threads. The :class:`Queue` class in this
|
||||||
module implements all the required locking semantics. It depends on the
|
module implements all the required locking semantics. It depends on the
|
||||||
|
@ -26,7 +24,7 @@ the first retrieved (operating like a stack). With a priority queue,
|
||||||
the entries are kept sorted (using the :mod:`heapq` module) and the
|
the entries are kept sorted (using the :mod:`heapq` module) and the
|
||||||
lowest valued entry is retrieved first.
|
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)
|
.. class:: Queue(maxsize)
|
||||||
|
|
||||||
|
@ -75,7 +73,7 @@ Queue Objects
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
Queue objects (:class:`Queue`, :class:`LifoQueue`, or :class:`PriorityQueue`)
|
Queue objects (:class:`Queue`, :class:`LifoQueue`, or :class:`PriorityQueue`)
|
||||||
provide the public methods described below.
|
provide the public methods described below.
|
||||||
|
|
||||||
|
|
||||||
.. method:: Queue.qsize()
|
.. method:: Queue.qsize()
|
||||||
|
@ -170,20 +168,20 @@ fully processed by daemon consumer threads.
|
||||||
|
|
||||||
Example of how to wait for enqueued tasks to be completed::
|
Example of how to wait for enqueued tasks to be completed::
|
||||||
|
|
||||||
def worker():
|
def worker():
|
||||||
while True:
|
while True:
|
||||||
item = q.get()
|
item = q.get()
|
||||||
do_work(item)
|
do_work(item)
|
||||||
q.task_done()
|
q.task_done()
|
||||||
|
|
||||||
q = Queue()
|
q = Queue()
|
||||||
for i in range(num_worker_threads):
|
for i in range(num_worker_threads):
|
||||||
t = Thread(target=worker)
|
t = Thread(target=worker)
|
||||||
t.setDaemon(True)
|
t.setDaemon(True)
|
||||||
t.start()
|
t.start()
|
||||||
|
|
||||||
for item in source():
|
for item in source():
|
||||||
q.put(item)
|
q.put(item)
|
||||||
|
|
||||||
q.join() # block until all tasks are done
|
q.join() # block until all tasks are done
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
This module constructs higher-level threading interfaces on top of the lower
|
This module constructs higher-level threading interfaces on top of the lower
|
||||||
level :mod:`thread` module.
|
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
|
The :mod:`dummy_threading` module is provided for situations where
|
||||||
:mod:`threading` cannot be used because :mod:`thread` is missing.
|
:mod:`threading` cannot be used because :mod:`thread` is missing.
|
||||||
|
|
|
@ -534,7 +534,7 @@ The :keyword:`raise` statement
|
||||||
If no expressions are present, :keyword:`raise` re-raises the last exception
|
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
|
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
|
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,
|
Otherwise, :keyword:`raise` evaluates the expressions to get three objects,
|
||||||
using ``None`` as the value of omitted expressions. The first two objects are
|
using ``None`` as the value of omitted expressions. The first two objects are
|
||||||
|
|
|
@ -16,7 +16,7 @@ Output Formatting
|
||||||
The :mod:`repr` module provides a version of :func:`repr` customized for
|
The :mod:`repr` module provides a version of :func:`repr` customized for
|
||||||
abbreviated displays of large or deeply nested containers::
|
abbreviated displays of large or deeply nested containers::
|
||||||
|
|
||||||
>>> import repr
|
>>> import repr
|
||||||
>>> repr.repr(set('supercalifragilisticexpialidocious'))
|
>>> repr.repr(set('supercalifragilisticexpialidocious'))
|
||||||
"set(['a', 'c', 'd', 'e', 'f', 'g', ...])"
|
"set(['a', 'c', 'd', 'e', 'f', 'g', ...])"
|
||||||
|
|
||||||
|
@ -174,7 +174,7 @@ tasks in background while the main program continues to run::
|
||||||
|
|
||||||
class AsyncZip(threading.Thread):
|
class AsyncZip(threading.Thread):
|
||||||
def __init__(self, infile, outfile):
|
def __init__(self, infile, outfile):
|
||||||
threading.Thread.__init__(self)
|
threading.Thread.__init__(self)
|
||||||
self.infile = infile
|
self.infile = infile
|
||||||
self.outfile = outfile
|
self.outfile = outfile
|
||||||
def run(self):
|
def run(self):
|
||||||
|
@ -198,9 +198,9 @@ variables, and semaphores.
|
||||||
While those tools are powerful, minor design errors can result in problems that
|
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
|
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
|
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.
|
:mod:`Queue` module to feed that thread with requests from other threads.
|
||||||
Applications using :class:`Queue` objects for inter-thread communication and
|
Applications using :class:`Queue.Queue` objects for inter-thread communication
|
||||||
coordination are easier to design, more readable, and more reliable.
|
and coordination are easier to design, more readable, and more reliable.
|
||||||
|
|
||||||
|
|
||||||
.. _tut-logging:
|
.. _tut-logging:
|
||||||
|
@ -358,11 +358,11 @@ For example, calculating a 5% tax on a 70 cent phone charge gives different
|
||||||
results in decimal floating point and binary floating point. The difference
|
results in decimal floating point and binary floating point. The difference
|
||||||
becomes significant if the results are rounded to the nearest cent::
|
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.70') * Decimal('1.05')
|
||||||
Decimal("0.7350")
|
Decimal("0.7350")
|
||||||
>>> .70 * 1.05
|
>>> .70 * 1.05
|
||||||
0.73499999999999999
|
0.73499999999999999
|
||||||
|
|
||||||
The :class:`Decimal` result keeps a trailing zero, automatically inferring four
|
The :class:`Decimal` result keeps a trailing zero, automatically inferring four
|
||||||
place significance from multiplicands with two place significance. Decimal
|
place significance from multiplicands with two place significance. Decimal
|
||||||
|
@ -380,7 +380,7 @@ calculations and equality tests that are unsuitable for binary floating point::
|
||||||
>>> sum([Decimal('0.1')]*10) == Decimal('1.0')
|
>>> sum([Decimal('0.1')]*10) == Decimal('1.0')
|
||||||
True
|
True
|
||||||
>>> sum([0.1]*10) == 1.0
|
>>> sum([0.1]*10) == 1.0
|
||||||
False
|
False
|
||||||
|
|
||||||
The :mod:`decimal` module provides arithmetic with as much precision as needed::
|
The :mod:`decimal` module provides arithmetic with as much precision as needed::
|
||||||
|
|
||||||
|
|
|
@ -1965,7 +1965,7 @@ details.
|
||||||
used to hold character data.
|
used to hold character data.
|
||||||
(Contributed by Achim Gaedke; :issue:`1137`.)
|
(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
|
in different orders. The :class:`PriorityQueue` class stores
|
||||||
queued items in a heap and retrieves them in priority order,
|
queued items in a heap and retrieves them in priority order,
|
||||||
and :class:`LifoQueue` retrieves the most recently added entries first,
|
and :class:`LifoQueue` retrieves the most recently added entries first,
|
||||||
|
|
|
@ -35,7 +35,7 @@ import SocketServer
|
||||||
import struct
|
import struct
|
||||||
import cPickle as pickle
|
import cPickle as pickle
|
||||||
import threading
|
import threading
|
||||||
import queue
|
import Queue
|
||||||
import traceback
|
import traceback
|
||||||
import copy_reg
|
import copy_reg
|
||||||
import types
|
import types
|
||||||
|
@ -117,8 +117,8 @@ class RPCServer(SocketServer.TCPServer):
|
||||||
#----------------- end class RPCServer --------------------
|
#----------------- end class RPCServer --------------------
|
||||||
|
|
||||||
objecttable = {}
|
objecttable = {}
|
||||||
request_queue = queue.Queue(0)
|
request_queue = Queue.Queue(0)
|
||||||
response_queue = queue.Queue(0)
|
response_queue = Queue.Queue(0)
|
||||||
|
|
||||||
|
|
||||||
class SocketIO(object):
|
class SocketIO(object):
|
||||||
|
@ -413,7 +413,7 @@ class SocketIO(object):
|
||||||
# send queued response if there is one available
|
# send queued response if there is one available
|
||||||
try:
|
try:
|
||||||
qmsg = response_queue.get(0)
|
qmsg = response_queue.get(0)
|
||||||
except queue.Empty:
|
except Queue.Empty:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
seq, response = qmsg
|
seq, response = qmsg
|
||||||
|
|
|
@ -5,7 +5,7 @@ import socket
|
||||||
import traceback
|
import traceback
|
||||||
import thread
|
import thread
|
||||||
import threading
|
import threading
|
||||||
import queue
|
import Queue
|
||||||
|
|
||||||
import CallTips
|
import CallTips
|
||||||
import AutoComplete
|
import AutoComplete
|
||||||
|
@ -85,7 +85,7 @@ def main(del_exitfunc=False):
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
seq, request = rpc.request_queue.get(block=True, timeout=0.05)
|
seq, request = rpc.request_queue.get(block=True, timeout=0.05)
|
||||||
except queue.Empty:
|
except Queue.Empty:
|
||||||
continue
|
continue
|
||||||
method, args, kwargs = request
|
method, args, kwargs = request
|
||||||
ret = method(*args, **kwargs)
|
ret = method(*args, **kwargs)
|
||||||
|
|
|
@ -40,7 +40,7 @@ class AllTest(unittest.TestCase):
|
||||||
self.check_all("configparser")
|
self.check_all("configparser")
|
||||||
self.check_all("Cookie")
|
self.check_all("Cookie")
|
||||||
self.check_all("MimeWriter")
|
self.check_all("MimeWriter")
|
||||||
self.check_all("queue")
|
self.check_all("Queue")
|
||||||
self.check_all("SimpleHTTPServer")
|
self.check_all("SimpleHTTPServer")
|
||||||
self.check_all("SocketServer")
|
self.check_all("SocketServer")
|
||||||
self.check_all("StringIO")
|
self.check_all("StringIO")
|
||||||
|
|
|
@ -7,7 +7,7 @@ implementation as its sole argument.
|
||||||
"""
|
"""
|
||||||
import dummy_thread as _thread
|
import dummy_thread as _thread
|
||||||
import time
|
import time
|
||||||
import queue
|
import Queue
|
||||||
import random
|
import random
|
||||||
import unittest
|
import unittest
|
||||||
from test import test_support
|
from test import test_support
|
||||||
|
@ -124,7 +124,7 @@ class ThreadTests(unittest.TestCase):
|
||||||
"""Use to test _thread.start_new_thread() passes args properly."""
|
"""Use to test _thread.start_new_thread() passes args properly."""
|
||||||
queue.put((arg1, arg2))
|
queue.put((arg1, arg2))
|
||||||
|
|
||||||
testing_queue = queue.Queue(1)
|
testing_queue = Queue.Queue(1)
|
||||||
_thread.start_new_thread(arg_tester, (testing_queue, True, True))
|
_thread.start_new_thread(arg_tester, (testing_queue, True, True))
|
||||||
result = testing_queue.get()
|
result = testing_queue.get()
|
||||||
self.failUnless(result[0] and result[1],
|
self.failUnless(result[0] and result[1],
|
||||||
|
@ -148,7 +148,7 @@ class ThreadTests(unittest.TestCase):
|
||||||
queue.put(_thread.get_ident())
|
queue.put(_thread.get_ident())
|
||||||
|
|
||||||
thread_count = 5
|
thread_count = 5
|
||||||
testing_queue = queue.Queue(thread_count)
|
testing_queue = Queue.Queue(thread_count)
|
||||||
if test_support.verbose:
|
if test_support.verbose:
|
||||||
print
|
print
|
||||||
print "*** Testing multiple thread creation "\
|
print "*** Testing multiple thread creation "\
|
||||||
|
|
|
@ -215,9 +215,7 @@ class TestStdlibRemovals(unittest.TestCase):
|
||||||
|
|
||||||
class TestStdlibRenames(unittest.TestCase):
|
class TestStdlibRenames(unittest.TestCase):
|
||||||
|
|
||||||
renames = {'Queue': 'queue',
|
renames = {'ConfigParser': 'configparser'}
|
||||||
'ConfigParser': 'configparser',
|
|
||||||
}
|
|
||||||
|
|
||||||
def check_rename(self, module_name, new_module_name):
|
def check_rename(self, module_name, new_module_name):
|
||||||
"""Make sure that:
|
"""Make sure that:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Some simple queue module tests, plus some failure conditions
|
# Some simple queue module tests, plus some failure conditions
|
||||||
# to ensure the Queue locks remain stable.
|
# to ensure the Queue locks remain stable.
|
||||||
import queue
|
import Queue
|
||||||
import sys
|
import sys
|
||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
|
@ -107,12 +107,12 @@ class BaseQueueTest(unittest.TestCase, BlockingTestMixin):
|
||||||
try:
|
try:
|
||||||
q.put("full", block=0)
|
q.put("full", block=0)
|
||||||
self.fail("Didn't appear to block with a full queue")
|
self.fail("Didn't appear to block with a full queue")
|
||||||
except queue.Full:
|
except Queue.Full:
|
||||||
pass
|
pass
|
||||||
try:
|
try:
|
||||||
q.put("full", timeout=0.01)
|
q.put("full", timeout=0.01)
|
||||||
self.fail("Didn't appear to time-out with a full queue")
|
self.fail("Didn't appear to time-out with a full queue")
|
||||||
except queue.Full:
|
except Queue.Full:
|
||||||
pass
|
pass
|
||||||
# Test a blocking put
|
# Test a blocking put
|
||||||
self.do_blocking_test(q.put, ("full",), q.get, ())
|
self.do_blocking_test(q.put, ("full",), q.get, ())
|
||||||
|
@ -124,12 +124,12 @@ class BaseQueueTest(unittest.TestCase, BlockingTestMixin):
|
||||||
try:
|
try:
|
||||||
q.get(block=0)
|
q.get(block=0)
|
||||||
self.fail("Didn't appear to block with an empty queue")
|
self.fail("Didn't appear to block with an empty queue")
|
||||||
except queue.Empty:
|
except Queue.Empty:
|
||||||
pass
|
pass
|
||||||
try:
|
try:
|
||||||
q.get(timeout=0.01)
|
q.get(timeout=0.01)
|
||||||
self.fail("Didn't appear to time-out with an empty queue")
|
self.fail("Didn't appear to time-out with an empty queue")
|
||||||
except queue.Empty:
|
except Queue.Empty:
|
||||||
pass
|
pass
|
||||||
# Test a blocking get
|
# Test a blocking get
|
||||||
self.do_blocking_test(q.get, (), q.put, ('empty',))
|
self.do_blocking_test(q.get, (), q.put, ('empty',))
|
||||||
|
@ -191,13 +191,13 @@ class BaseQueueTest(unittest.TestCase, BlockingTestMixin):
|
||||||
|
|
||||||
|
|
||||||
class QueueTest(BaseQueueTest):
|
class QueueTest(BaseQueueTest):
|
||||||
type2test = queue.Queue
|
type2test = Queue.Queue
|
||||||
|
|
||||||
class LifoQueueTest(BaseQueueTest):
|
class LifoQueueTest(BaseQueueTest):
|
||||||
type2test = queue.LifoQueue
|
type2test = Queue.LifoQueue
|
||||||
|
|
||||||
class PriorityQueueTest(BaseQueueTest):
|
class PriorityQueueTest(BaseQueueTest):
|
||||||
type2test = queue.PriorityQueue
|
type2test = Queue.PriorityQueue
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -205,21 +205,21 @@ class PriorityQueueTest(BaseQueueTest):
|
||||||
class FailingQueueException(Exception):
|
class FailingQueueException(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class FailingQueue(queue.Queue):
|
class FailingQueue(Queue.Queue):
|
||||||
def __init__(self, *args):
|
def __init__(self, *args):
|
||||||
self.fail_next_put = False
|
self.fail_next_put = False
|
||||||
self.fail_next_get = False
|
self.fail_next_get = False
|
||||||
queue.Queue.__init__(self, *args)
|
Queue.Queue.__init__(self, *args)
|
||||||
def _put(self, item):
|
def _put(self, item):
|
||||||
if self.fail_next_put:
|
if self.fail_next_put:
|
||||||
self.fail_next_put = False
|
self.fail_next_put = False
|
||||||
raise FailingQueueException, "You Lose"
|
raise FailingQueueException, "You Lose"
|
||||||
return queue.Queue._put(self, item)
|
return Queue.Queue._put(self, item)
|
||||||
def _get(self):
|
def _get(self):
|
||||||
if self.fail_next_get:
|
if self.fail_next_get:
|
||||||
self.fail_next_get = False
|
self.fail_next_get = False
|
||||||
raise FailingQueueException, "You Lose"
|
raise FailingQueueException, "You Lose"
|
||||||
return queue.Queue._get(self)
|
return Queue.Queue._get(self)
|
||||||
|
|
||||||
class FailingQueueTest(unittest.TestCase, BlockingTestMixin):
|
class FailingQueueTest(unittest.TestCase, BlockingTestMixin):
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ import select
|
||||||
import thread, threading
|
import thread, threading
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
import queue
|
import Queue
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import array
|
import array
|
||||||
|
@ -96,7 +96,7 @@ class ThreadableTest:
|
||||||
self.server_ready = threading.Event()
|
self.server_ready = threading.Event()
|
||||||
self.client_ready = threading.Event()
|
self.client_ready = threading.Event()
|
||||||
self.done = threading.Event()
|
self.done = threading.Event()
|
||||||
self.queue = queue.Queue(1)
|
self.queue = Queue.Queue(1)
|
||||||
|
|
||||||
# Do some munging to start the client test.
|
# Do some munging to start the client test.
|
||||||
methodname = self.id()
|
methodname = self.id()
|
||||||
|
|
|
@ -1044,7 +1044,7 @@ str(object) printablerepresentation of an object. Class overridable
|
||||||
super(type) Create an unbound super object. Used to call cooperative
|
super(type) Create an unbound super object. Used to call cooperative
|
||||||
superclass methods.
|
superclass methods.
|
||||||
sum(sequence, Add the values in the sequence and return the sum.
|
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
|
tuple(sequence) Creates a tuple with same elements as sequence. If already
|
||||||
a tuple, return itself (not a copy).
|
a tuple, return itself (not a copy).
|
||||||
Returns a type object [see module types] representing
|
Returns a type object [see module types] representing
|
||||||
|
@ -1952,7 +1952,7 @@ pty Pseudo terminal utilities.
|
||||||
pyexpat Interface to the Expay XML parser.
|
pyexpat Interface to the Expay XML parser.
|
||||||
py_compile Routine to "compile" a .py file to a .pyc file.
|
py_compile Routine to "compile" a .py file to a .pyc file.
|
||||||
pyclbr Parse a Python file and retrieve classes and methods.
|
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.
|
quopri Conversions to/from quoted-printable transport encoding.
|
||||||
rand Don't use unless you want compatibility with C's rand().
|
rand Don't use unless you want compatibility with C's rand().
|
||||||
random Random variable generators
|
random Random variable generators
|
||||||
|
|
|
@ -10,7 +10,7 @@ from Tkinter import *
|
||||||
import websucker
|
import websucker
|
||||||
import os
|
import os
|
||||||
import threading
|
import threading
|
||||||
import queue
|
import Queue
|
||||||
import time
|
import time
|
||||||
|
|
||||||
VERBOSE = 2
|
VERBOSE = 2
|
||||||
|
@ -139,7 +139,7 @@ class App:
|
||||||
|
|
||||||
def go(self, event=None):
|
def go(self, event=None):
|
||||||
if not self.msgq:
|
if not self.msgq:
|
||||||
self.msgq = queue.Queue(0)
|
self.msgq = Queue.Queue(0)
|
||||||
self.check_msgq()
|
self.check_msgq()
|
||||||
if not self.sucker:
|
if not self.sucker:
|
||||||
self.sucker = SuckerThread(self.msgq)
|
self.sucker = SuckerThread(self.msgq)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue