pytorch/caffe2/python/context_test.py
Kittipat Virochsiri 058815955d Add default implementation of __call__ for context manager
Summary: Making it more convenient to wrap code int context

Reviewed By: boryiingsu

Differential Revision: D5680991

fbshipit-source-id: 07b7e4d5aa657184039a7d18192b68fe11c1a570
2017-08-22 17:46:22 -07:00

40 lines
1.0 KiB
Python

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
from caffe2.python import context, test_util
from threading import Thread
@context.define_context()
class MyContext(object):
pass
class TestContext(test_util.TestCase):
def use_my_context(self):
try:
for _ in range(100):
with MyContext() as a:
for _ in range(100):
self.assertTrue(MyContext.current() == a)
except Exception as e:
self._exceptions.append(e)
def testMultiThreaded(self):
threads = []
self._exceptions = []
for _ in range(8):
thread = Thread(target=self.use_my_context)
thread.start()
threads.append(thread)
for t in threads:
t.join()
for e in self._exceptions:
raise e
@MyContext()
def testDecorator(self):
self.assertIsNotNone(MyContext.current())