<div>There is @support.reap_thread which can help.</div><div><br></div><div>Victor</div><div><br><div class="gmail_quote"><div>Le dim. 22 janv. 2017 à 21:04, Ethan Furman <<a href="mailto:ethan@stoneleaf.us">ethan@stoneleaf.us</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Question:  I need to add a threaded test to the enum test module [1] -- is there anything extra I<br class="gmail_msg"><br>need to worry about besides the test itself?  Setting or resetting or using a tool library, etc?<br class="gmail_msg"><br><br class="gmail_msg"><br>--<br class="gmail_msg"><br>~Ethan~<br class="gmail_msg"><br><br class="gmail_msg"><br><br class="gmail_msg"><br>[1] The test to be added:<br class="gmail_msg"><br><br class="gmail_msg"><br>     def test_unique_composite(self):<br class="gmail_msg"><br>         # override __eq__ to be identity only<br class="gmail_msg"><br>         class TestFlag(IntFlag):<br class="gmail_msg"><br>             one = auto()<br class="gmail_msg"><br>             two = auto()<br class="gmail_msg"><br>             three = auto()<br class="gmail_msg"><br>             four = auto()<br class="gmail_msg"><br>             five = auto()<br class="gmail_msg"><br>             six = auto()<br class="gmail_msg"><br>             seven = auto()<br class="gmail_msg"><br>             eight = auto()<br class="gmail_msg"><br>             def __eq__(self, other):<br class="gmail_msg"><br>                 return self is other<br class="gmail_msg"><br>             def __hash__(self):<br class="gmail_msg"><br>                 return hash(self._value_)<br class="gmail_msg"><br>         # have multiple threads competing to complete the composite members<br class="gmail_msg"><br>         seen = set()<br class="gmail_msg"><br>         failed = False<br class="gmail_msg"><br>         def cycle_enum():<br class="gmail_msg"><br>             nonlocal failed<br class="gmail_msg"><br>             try:<br class="gmail_msg"><br>                 for i in range(256):<br class="gmail_msg"><br>                     seen.add(TestFlag(i))<br class="gmail_msg"><br>             except (Exception, RuntimeError):<br class="gmail_msg"><br>                 failed = True<br class="gmail_msg"><br>         threads = []<br class="gmail_msg"><br>         for i in range(8):<br class="gmail_msg"><br>             threads.append(threading.Thread(target=cycle_enum))<br class="gmail_msg"><br>         for t in threads:<br class="gmail_msg"><br>             t.start()<br class="gmail_msg"><br>         for t in threads:<br class="gmail_msg"><br>             t.join()<br class="gmail_msg"><br>         # check that only 248 members were created<br class="gmail_msg"><br>         self.assertFalse(<br class="gmail_msg"><br>                 failed,<br class="gmail_msg"><br>                 'at least one thread failed while creating composite members')<br class="gmail_msg"><br>         self.assertEqual(256, len(seen), 'too many composite members created')<br class="gmail_msg"><br>_______________________________________________<br class="gmail_msg"><br>Python-Dev mailing list<br class="gmail_msg"><br><a href="mailto:Python-Dev@python.org" class="gmail_msg" target="_blank">Python-Dev@python.org</a><br class="gmail_msg"><br><a href="https://mail.python.org/mailman/listinfo/python-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://mail.python.org/mailman/listinfo/python-dev</a><br class="gmail_msg"><br>Unsubscribe: <a href="https://mail.python.org/mailman/options/python-dev/victor.stinner%40gmail.com" rel="noreferrer" class="gmail_msg" target="_blank">https://mail.python.org/mailman/options/python-dev/victor.stinner%40gmail.com</a><br class="gmail_msg"><br></blockquote></div></div>