| # -*- coding: utf-8 -*- | |
| import threading | |
| from pybind11_tests import thread as m | |
| class Thread(threading.Thread): | |
| def __init__(self, fn): | |
| super(Thread, self).__init__() | |
| self.fn = fn | |
| self.e = None | |
| def run(self): | |
| try: | |
| for i in range(10): | |
| self.fn(i, i) | |
| except Exception as e: | |
| self.e = e | |
| def join(self): | |
| super(Thread, self).join() | |
| if self.e: | |
| raise self.e | |
| def test_implicit_conversion(): | |
| a = Thread(m.test) | |
| b = Thread(m.test) | |
| c = Thread(m.test) | |
| for x in [a, b, c]: | |
| x.start() | |
| for x in [c, b, a]: | |
| x.join() | |
| def test_implicit_conversion_no_gil(): | |
| a = Thread(m.test_no_gil) | |
| b = Thread(m.test_no_gil) | |
| c = Thread(m.test_no_gil) | |
| for x in [a, b, c]: | |
| x.start() | |
| for x in [c, b, a]: | |
| x.join() |