@@ -2651,6 +2651,46 @@ The :mod:`multiprocessing.dummy` module
2651
2651
:mod: `multiprocessing.dummy ` replicates the API of :mod: `multiprocessing ` but is
2652
2652
no more than a wrapper around the :mod: `threading ` module.
2653
2653
2654
+ .. currentmodule :: multiprocessing.pool
2655
+
2656
+ In particular, the ``Pool `` function provided by :mod: `multiprocessing.dummy `
2657
+ returns an instance of :class: `ThreadPool `, which is a subclass of
2658
+ :class: `Pool ` that supports all the same method calls but uses a pool of
2659
+ worker threads rather than worker processes.
2660
+
2661
+
2662
+ .. class :: ThreadPool([processes[, initializer[, initargs]]])
2663
+
2664
+ A thread pool object which controls a pool of worker threads to which jobs
2665
+ can be submitted. :class: `ThreadPool ` instances are fully interface
2666
+ compatible with :class: `Pool ` instances, and their resources must also be
2667
+ properly managed, either by using the pool as a context manager or by
2668
+ calling :meth: `~multiprocessing.pool.Pool.close ` and
2669
+ :meth: `~multiprocessing.pool.Pool.terminate ` manually.
2670
+
2671
+ *processes * is the number of worker threads to use. If *processes * is
2672
+ ``None `` then the number returned by :func: `os.cpu_count ` is used.
2673
+
2674
+ If *initializer * is not ``None `` then each worker process will call
2675
+ ``initializer(*initargs) `` when it starts.
2676
+
2677
+ Unlike :class: `Pool `, *maxtasksperchild * and *context * cannot be provided.
2678
+
2679
+ .. note ::
2680
+
2681
+ A :class: `ThreadPool ` shares the same interface as :class: `Pool `, which
2682
+ is designed around a pool of processes and predates the introduction of
2683
+ the :class: `concurrent.futures ` module. As such, it inherits some
2684
+ operations that don't make sense for a pool backed by threads, and it
2685
+ has its own type for representing the status of asynchronous jobs,
2686
+ :class: `AsyncResult `, that is not understood by any other libraries.
2687
+
2688
+ Users should generally prefer to use
2689
+ :class: `concurrent.futures.ThreadPoolExecutor `, which has a simpler
2690
+ interface that was designed around threads from the start, and which
2691
+ returns :class: `concurrent.futures.Future ` instances that are
2692
+ compatible with many other libraries, including :mod: `asyncio `.
2693
+
2654
2694
2655
2695
.. _multiprocessing-programming :
2656
2696
0 commit comments