Simplify __all__ in multiprocessing (GH-6856)

diff --git a/Lib/multiprocessing/__init__.py b/Lib/multiprocessing/__init__.py
index 86df638..8336f38 100644
--- a/Lib/multiprocessing/__init__.py
+++ b/Lib/multiprocessing/__init__.py
@@ -19,9 +19,8 @@
 # Copy stuff from default context
 #
 
-globals().update((name, getattr(context._default_context, name))
-                 for name in context._default_context.__all__)
-__all__ = context._default_context.__all__
+__all__ = [x for x in dir(context._default_context) if not x.startswith('_')]
+globals().update((name, getattr(context._default_context, name)) for name in __all__)
 
 #
 # XXX These should not really be documented or public.
diff --git a/Lib/multiprocessing/context.py b/Lib/multiprocessing/context.py
index c98ee43..871746b 100644
--- a/Lib/multiprocessing/context.py
+++ b/Lib/multiprocessing/context.py
@@ -5,7 +5,7 @@
 from . import process
 from . import reduction
 
-__all__ = []            # things are copied from here to __init__.py
+__all__ = ()
 
 #
 # Exceptions
@@ -24,7 +24,7 @@
     pass
 
 #
-# Base type for contexts
+# Base type for contexts. Bound methods of an instance of this type are included in __all__ of __init__.py
 #
 
 class BaseContext(object):
@@ -261,8 +261,6 @@
             else:
                 return ['fork', 'spawn']
 
-DefaultContext.__all__ = [x for x in dir(DefaultContext) if x[0] != '_']
-
 #
 # Context types for fixed start method
 #