예제 #1
0
 def set_points_and_lines(O, args=None):
   if (args is not None):
     O.args = args
   O.draw_map.set_unit_cell_and_density_map(unit_cell=None, density_map=None)
   O.child_thread = thread_with_callback_and_wait(
     run=tst_tardy_pdb.run,
     run_kwds={"args": O.args},
     callback=O.action_callback,
     first_callback=O.first_action_callback)
   O.child_thread.start_and_wait_for_first_callback()
예제 #2
0
def exercise_threading() :
  collected = []

  def first_callback(i):
    collected.append(-i*10)

  def callback(i):
    collected.append(i*10)
    return (i < 5)

  def run(n=3, callback=None):
    i = 1
    while (callback is not None or i <= n):
      collected.append(i)
      if (callback is not None):
        status = callback(i)
        if (status == False):
          break
      i += 1

  run()
  assert collected == [1,2,3]

  for callback1,expected in [
        (None, [1,10]),
        (first_callback, [1,-10])]:
    for n_resume in xrange(7):
      collected = []
      t = thread_with_callback_and_wait(
        run=run,
        callback=callback,
        first_callback=callback1)
      if (callback1 is None):
        t.start()
      else:
        t.start_and_wait_for_first_callback()
      for i in xrange(n_resume):
        t.resume()
      t.resume(last_iteration=True).join()
      assert collected == expected
      if (n_resume < 4):
        expected.extend([n_resume+2, (n_resume+2)*10])
예제 #3
0
 def set_points_and_lines(self):
     self.child_thread = thread_with_callback_and_wait(
         run=motion,
         callback=self.motion_callback,
         first_callback=self.first_motion_callback)
     self.child_thread.start_and_wait_for_first_callback()
예제 #4
0
 def set_points_and_lines(self):
   self.child_thread = thread_with_callback_and_wait(
     run = motion,
     callback = self.motion_callback,
     first_callback = self.first_motion_callback)
   self.child_thread.start_and_wait_for_first_callback()