code: def test_async_multiple_managers_mixed_queue_process(self):
      sentinel = {"called": 0}
  
      def sync_queue_process(f, *args, **kwargs):
          sentinel["called"] += 1
          f(*args, **kwargs)
  
      tbl = Table({"a": int, "b": float, "c": str})
      tbl2 = Table({"a": int, "b": float, "c": str})
      manager = PerspectiveManager()
      manager2 = PerspectiveManager()
      manager.host_table("tbl", tbl)
      manager2.host_table("tbl2", tbl2)
  
      # manager uses tornado, manager2 is synchronous
      manager.set_loop_callback(TestAsync.loop.add_callback)
      manager2.set_loop_callback(sync_queue_process)
  
      @syncify
      def _tbl_task():
          for i in range(5):
              tbl.update([data[i]])
          return tbl.size()
  
      assert _tbl_task() == 5
  
      for i in range(5):
          tbl2.update([data[i]])
  
      assert sentinel["called"] == 5
  
      @syncify
      def _tbl_task2():
          view = tbl.view()
          records = view.to_records()
          view.delete()
          tbl.delete()
          return records
  
      assert _tbl_task2() == data[:5]
  
      view = tbl2.view()
      assert view.to_records() == data[:5]
  
      view.delete()
      tbl2.delete()
  
imports: import queue
  import random
  import threading
  from functools import partial
  import tornado.ioloop
  from perspective import PerspectiveError, PerspectiveManager, Table
  from pytest import raises
label_desc: Use image node_id 9 for calling the TestAsync obj's underlying member method code with example usage: obj.test_async_multiple_managers_mixed_queue_process() and returns: tbl, records