import stackless
import pickle

def squareroot(x):
  # Método Newton
  print
  print "Raíz cuadrada de ",x
  print "----------------"
  i=0
  y=x
  print i, ":", y
  while True:
       i += 1

    y = (y + x/y)/2.0
    print i, ":", y
    stackless.schedule()

if __name__ == '__main__':
  import sys
  x = float(sys.argv[5])
  task = stackless.tasklet(squareroot)(x)
  stackless.schedule()
  stackless.schedule()
  print 'pickle'
  pickled_task = pickle.dumps(task)
  task.remove()
  print 'unpickle'
  newtask = pickle.loads(pickled_task)
  newtask.insert()
  stackless.schedule()
  stackless.schedule()
