bpo-39877: Remove useless PyEval_InitThreads() calls (GH-18883)

Py_Initialize() calls PyEval_InitThreads() since Python 3.7. It's no
longer needed to call it explicitly.
diff --git a/Include/ceval.h b/Include/ceval.h
index 62c6489..e977fcb 100644
--- a/Include/ceval.h
+++ b/Include/ceval.h
@@ -121,9 +121,6 @@
    WARNING: NEVER NEST CALLS TO Py_BEGIN_ALLOW_THREADS AND
    Py_END_ALLOW_THREADS!!!
 
-   The function PyEval_InitThreads() should be called only from
-   init_thread() in "_threadmodule.c".
-
    Note that not yet all candidates have been converted to use this
    mechanism!
 */
diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py
index 87842b9..46ed113 100644
--- a/Lib/test/test_embed.py
+++ b/Lib/test/test_embed.py
@@ -267,9 +267,8 @@
 
     def test_bpo20891(self):
         """
-        bpo-20891: Calling PyGILState_Ensure in a non-Python thread before
-        calling PyEval_InitThreads() must not crash. PyGILState_Ensure() must
-        call PyEval_InitThreads() for us in this case.
+        bpo-20891: Calling PyGILState_Ensure in a non-Python thread must not
+        crash.
         """
         out, err = self.run_embedded_interpreter("test_bpo20891")
         self.assertEqual(out, '')
diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c
index 4747195..dab3939 100644
--- a/Modules/_ctypes/_ctypes.c
+++ b/Modules/_ctypes/_ctypes.c
@@ -5695,7 +5695,6 @@
    ob_type is the metatype (the 'type'), defaults to PyType_Type,
    tp_base is the base type, defaults to 'object' aka PyBaseObject_Type.
 */
-    PyEval_InitThreads();
     m = PyModule_Create(&_ctypesmodule);
     if (!m)
         return NULL;
diff --git a/Modules/_ctypes/callbacks.c b/Modules/_ctypes/callbacks.c
index d2d9a65..2b903c9 100644
--- a/Modules/_ctypes/callbacks.c
+++ b/Modules/_ctypes/callbacks.c
@@ -423,7 +423,6 @@
 {
     if (!Py_IsInitialized()) {
         Py_Initialize();
-        PyEval_InitThreads();
     }
 }
 
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
index 2b871b8..3132f52 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -2728,8 +2728,6 @@
         return NULL;
     }
 
-    /* Ensure Python is set up for threading */
-    PyEval_InitThreads();
     thread_done = PyThread_allocate_lock();
     if (thread_done == NULL)
         return PyErr_NoMemory();
@@ -4175,8 +4173,6 @@
     test_c_thread_t test_c_thread;
     long thread;
 
-    PyEval_InitThreads();
-
     test_c_thread.start_event = PyThread_allocate_lock();
     test_c_thread.exit_event = PyThread_allocate_lock();
     test_c_thread.callback = NULL;
diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c
index 11bc16f..ee70183 100644
--- a/Modules/_threadmodule.c
+++ b/Modules/_threadmodule.c
@@ -1074,7 +1074,7 @@
     Py_INCREF(func);
     Py_INCREF(args);
     Py_XINCREF(keyw);
-    PyEval_InitThreads(); /* Start the interpreter's thread-awareness */
+
     ident = PyThread_start_new_thread(t_bootstrap, (void*) boot);
     if (ident == PYTHREAD_INVALID_THREAD_ID) {
         PyErr_SetString(ThreadError, "can't start new thread");
diff --git a/Programs/_testembed.c b/Programs/_testembed.c
index b98696c..900a4b1 100644
--- a/Programs/_testembed.c
+++ b/Programs/_testembed.c
@@ -62,7 +62,6 @@
         _testembed_Py_Initialize();
         mainstate = PyThreadState_Get();
 
-        PyEval_InitThreads();
         PyEval_ReleaseThread(mainstate);
 
         gilstate = PyGILState_Ensure();
@@ -252,9 +251,8 @@
     /* the test doesn't support custom memory allocators */
     putenv("PYTHONMALLOC=");
 
-    /* bpo-20891: Calling PyGILState_Ensure in a non-Python thread before
-       calling PyEval_InitThreads() must not crash. PyGILState_Ensure() must
-       call PyEval_InitThreads() for us in this case. */
+    /* bpo-20891: Calling PyGILState_Ensure in a non-Python thread must not
+       crash. */
     PyThread_type_lock lock = PyThread_allocate_lock();
     if (!lock) {
         fprintf(stderr, "PyThread_allocate_lock failed!");
diff --git a/Python/ceval.c b/Python/ceval.c
index 42f08c4..26cefead 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -345,7 +345,7 @@
     _PyRuntimeState *runtime = tstate->interp->runtime;
     struct _ceval_runtime_state *ceval = &runtime->ceval;
 
-    /* Check someone has called PyEval_InitThreads() to create the lock */
+    /* Check that _PyEval_InitThreads() was called to create the lock */
     assert(gil_created(&ceval->gil));
 
     take_gil(ceval, tstate);
@@ -541,9 +541,7 @@
 static int
 handle_signals(_PyRuntimeState *runtime)
 {
-    /* Only handle signals on main thread.  PyEval_InitThreads must
-     * have been called already.
-     */
+    /* Only handle signals on main thread */
     if (PyThread_get_thread_ident() != runtime->main_thread) {
         return 0;
     }