Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Registro avanzado
Puede grabar todo el proceso de procesamiento de tareas mediante un registrador. Estas técnicas de registro avanzadas permiten ver el sondeo en segundo plano y crear un registro para su posterior depuración.
Para utilizar el registrador, recomendamos cambiar lospoll_interval_seconds
parámetrospoll_timeout_seconds
y para que una tarea pueda ejecutarse durante mucho tiempo y el estado de la tarea se registre de forma continua y los resultados se guarden en un archivo. Puede transferir este código a un script de Python en lugar de a un cuaderno de Jupyter, para que el script pueda ejecutarse como un proceso en segundo plano.
Configurar el registrador
Primero, configure el registrador para que todos los registros se escriban automáticamente en un archivo de texto, como se muestra en las siguientes líneas de ejemplo.
# import the module import logging from datetime import datetime # set filename for logs log_file = 'device_logs-'+datetime.strftime(datetime.now(), '%Y%m%d%H%M%S')+'.txt' print('Task info will be logged in:', log_file) # create new logger object logger = logging.getLogger("newLogger") # configure to log to file device_logs.txt in the appending mode logger.addHandler(logging.FileHandler(filename=log_file, mode='a')) # add to file all log messages with level DEBUG or above logger.setLevel(logging.DEBUG)
Task info will be logged in: device_logs-20200803203309.txt
Crear y ejecutar el circuito
Ahora puede crear un circuito, enviarlo a un dispositivo para que lo ejecute y ver qué ocurre, como se muestra en este ejemplo.
# define circuit circ_log = Circuit().rx(0, 0.15).ry(1, 0.2).rz(2, 0.25).h(3).cnot(control=0, target=2).zz(1, 3, 0.15).x(4) print(circ_log) # define backend device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1") # define what info to log logger.info( device.run(circ_log, s3_location, poll_timeout_seconds=1200, poll_interval_seconds=0.25, logger=logger, shots=1000) .result().measurement_counts )
Comprobar el archivo de registro
Puede comprobar lo que está escrito en el archivo al introducir el siguiente comando.
# print logs ! cat {log_file}
Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: start polling for completion Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status CREATED Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status CREATED Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status QUEUED Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status RUNNING Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status RUNNING Task arn:aws:braket:us-west-2:123412341234:quantum-task/5088ec6c-89cf-4338-9750-9f5bb12a0dc4: task status COMPLETED Counter({'00001': 493, '00011': 493, '01001': 5, '10111': 4, '01011': 3, '10101': 2})
Obtenga el ARN del archivo de registro
A partir de la salida del archivo de registro que se devuelve, como se muestra en el ejemplo anterior, puede obtener la información del ARN. Con el ID de ARN, puede recuperar el resultado de la tarea completada.
# parse log file for arn with open(log_file) as openfile: for line in openfile: for part in line.split(): if "arn:" in part: arn = part break # remove final semicolon in logs arn = arn[:-1] # with this arn you can restore again task from unique arn task_load = AwsQuantumTask(arn=arn, aws_session=AwsSession()) # get results of task result = task_load.result()