t.daemon = True
self.assertTrue('daemon' in repr(t))
+ def test_deamon_param(self):
+ t = threading.Thread()
+ self.assertFalse(t.daemon)
+ t = threading.Thread(daemon=False)
+ self.assertFalse(t.daemon)
+ t = threading.Thread(daemon=True)
+ self.assertTrue(t.daemon)
+
+ @unittest.skipUnless(hasattr(os, 'fork'), 'test needs fork()')
+ def test_dummy_thread_after_fork(self):
+ # Issue #14308: a dummy thread in the active list doesn't mess up
+ # the after-fork mechanism.
+ code = """if 1:
+ import _thread, threading, os, time
+
+ def background_thread(evt):
+ # Creates and registers the _DummyThread instance
+ threading.current_thread()
+ evt.set()
+ time.sleep(10)
+
+ evt = threading.Event()
+ _thread.start_new_thread(background_thread, (evt,))
+ evt.wait()
+ assert threading.active_count() == 2, threading.active_count()
+ if os.fork() == 0:
+ assert threading.active_count() == 1, threading.active_count()
+ os._exit(0)
+ else:
+ os.wait()
+ """
+ _, out, err = assert_python_ok("-c", code)
+ self.assertEqual(out, b'')
+ self.assertEqual(err, b'')
+
class ThreadJoinOnShutdown(BaseTestCase):
Library
-------
+ - Issue #14308: Fix an exception when a "dummy" thread is in the threading
+ module's active list after a fork().
+
+- Issue #11750: The Windows API functions scattered in the _subprocess and
+ _multiprocessing.win32 modules now live in a single module "_winapi".
+ Patch by sbt.
+
+- Issue #14087: multiprocessing: add Condition.wait_for(). Patch by sbt.
+
- Issue #14538: HTMLParser can now parse correctly start tags that contain
a bare '/'.