Added a main() function and support to run this module as a script.
Closes SF feature request #588768.
diff --git a/Doc/lib/libpycompile.tex b/Doc/lib/libpycompile.tex
index ebbc9b9..a28b4fe 100644
--- a/Doc/lib/libpycompile.tex
+++ b/Doc/lib/libpycompile.tex
@@ -10,8 +10,9 @@
 
 
 \indexii{file}{byte-code}
-The \module{py_compile} module provides a single function to generate
-a byte-code file from a source file.
+The \module{py_compile} module provides a function to generate a
+byte-code file from a source file, and another function used when the
+module source file is invoked as a script.
 
 Though not often needed, this function can be useful when installing
 modules for shared use, especially if some of the users may not have
@@ -29,6 +30,17 @@
 \end{funcdesc}
 
 
+\begin{funcdesc}{main}{\optional{args}}
+  Compile several source files.  The files named in \var{args} (or on
+  the command line, if \var{args} is not specified) are compiled and
+  the resulting bytecode is cached in the normal manner.  This
+  function does not search a directory structure to locate source
+  files; it only compiles files named explicitly.
+\end{funcdesc}
+
+When this module is run as a script, the \function{main()} is used to
+compile all the files named on the command line.
+
 \begin{seealso}
   \seemodule{compileall}{Utilities to compile all Python source files
                          in a directory tree.}
diff --git a/Lib/py_compile.py b/Lib/py_compile.py
index 4a3a8a0..2d5c36a 100644
--- a/Lib/py_compile.py
+++ b/Lib/py_compile.py
@@ -12,7 +12,7 @@
 
 MAGIC = imp.get_magic()
 
-__all__ = ["compile"]
+__all__ = ["compile", "main"]
 
 # Define an internal helper according to the platform
 if os.name == "mac":
@@ -86,3 +86,21 @@
     fc.write(MAGIC)
     fc.close()
     set_creator_type(cfile)
+
+def main(args=None):
+    """Compile several source files.
+
+    The files named in 'args' (or on the command line, if 'args' is
+    not specified) are compiled and the resulting bytecode is cached
+    in the normal manner.  This function does not search a directory
+    structure to locate source files; it only compiles files named
+    explicitly.
+
+    """
+    if args is None:
+        args = sys.argv[1:]
+    for filename in args:
+        compile(filename)
+
+if __name__ == "__main__":
+    main()