Skip to main content
IBM Quantum Platform

유틸리티

qiskit.utils


지원 중단

add_deprecation_to_docstring

qiskit.utils.add_deprecation_to_docstring(func, msg, *, since, pending)

GitHub

func의 문서 문자열에 사용 중단 메시지를 동적으로 삽입합니다.

매개변수

  • func (Callable) – 수정할 함수.
  • msg (str) – 전체 사용 중단 메시지입니다.
  • since (str | None) – 사용 중단이 시작된 버전입니다.
  • pending (bool) – 사용 중단이 아직 보류 중인가요?

리턴 유형

없음

deprecate_arg

qiskit.utils.deprecate_arg(name, *, since, additional_msg=None, deprecation_description=None, pending=False, package_name='Qiskit', new_alias=None, predicate=None, removal_timeline='no earlier than 3 months after the release date')

GitHub

데코레이터를 사용하여 인수가 어떤 식으로든 사용되지 않음을 나타냅니다.

이 데코레이터는 더 이상 사용되지 않는 인수당 한 번씩 동일한 함수에서 여러 번 사용할 수 있습니다. @staticmethod 및 속성 데코레이터와 같은 다른 데코레이터 아래에 배치해야 합니다.

매개변수

  • name (str) – 더 이상 사용되지 않는 인수의 이름입니다.
  • since (str) – 사용 중단이 시작된 버전입니다. 사용 중단이 보류 중인 경우 버전을 보류가 시작된 시점으로 설정하고, 나중에 보류에서 사용 중단으로 전환할 때는 이후를 새 버전으로 업데이트합니다.
  • deprecation_description (str | None) – 무엇이 더 이상 사용되지 않나요? E.g. "내_func()의 내_arg 인수를 없음으로 설정합니다." 설정하지 않으면 기본값은 " {func_name} 의 인수 {name} "로 설정됩니다.
  • additional_msg (str | None) – 대신 사용할 이름(new_alias가 설정되지 않은 경우)과 같은 추가 정보를 여기에 입력합니다. 예를 들어, "대신 유사하지만 회로 설정에 영향을 주지 않는 new_arg 인수를 사용하세요."와 같이 말입니다
  • pending (bool) – 사용 중단이 아직 보류 중이면 True로 설정합니다.
  • package_name (str) – 사용 중단 메시지에 표시된 패키지 이름(예: PyPI 패키지 이름).
  • new_alias (str | None) – 인수의 이름이 단순히 변경된 경우 이 값을 새 이름으로 설정합니다. 데코레이터는 사용자가 이전 인수를 설정하면 새로운 _alias 인수로 전달되도록 kwarg를 동적으로 업데이트합니다.
  • predicate (Callable[[Any], bool] | None) – 예측자가 True를 반환할 때만 런타임 경고를 기록하십시오. 이는 인자에 대한 특정 값이나 유형을 사용 중단하는 데 유용합니다. 예를 들어 lambda my_arg: isinstance(my_arg, dict). 예측자가 설정되었는지 여부와 관계없이, 런타임 경고는 사용자가 인수를 명시적으로 지정할 때만 기록됩니다.
  • removal_timeline (str) – 이 사용 중단은 얼마나 빨리 제거될 수 있나요? "최신 릴리스 후 6개월 이내" 또는 "릴리스 중 9.99 "과 같은 값을 예상합니다.

리턴

장식된 콜러블입니다.

리턴 유형

호출 가능

deprecate_func

qiskit.utils.deprecate_func(*, since, additional_msg=None, pending=False, package_name='Qiskit', removal_timeline='no earlier than 3 months after the release date', is_property=False, stacklevel=2)

GitHub

데코레이터를 사용하여 함수가 더 이상 사용되지 않음을 나타냅니다.

정적 메서드 및 속성 데코레이터와 같은 다른 데코레이터 아래에 배치해야 합니다.

클래스를 폐기할 때는 해당 클래스의 __init__ 함수에 이 데코레이터를 설정하세요.

매개변수

  • since (str) – 사용 중단이 시작된 버전입니다. 사용 중단이 보류 중인 경우 버전을 보류가 시작된 시점으로 설정하고, 나중에 보류에서 사용 중단으로 전환할 때는 since 을 새 버전으로 업데이트하세요.
  • additional_msg (str | None) – 대신 사용할 항목과 같은 추가 정보를 여기에 입력합니다. 예를 들어, "대신 유사하지만 GPU 가속을 사용하는 <my_module>.<my_submodule> 모듈의 new_func 함수를 사용하세요."라고 설명합니다
  • pending (bool) – 사용 중단이 아직 보류 중인 경우 True 로 설정합니다.
  • package_name (str) – 사용 중단 메시지에 표시된 패키지 이름(예: PyPI 패키지 이름).
  • removal_timeline (str) – 이 사용 중단은 얼마나 빨리 제거될 수 있나요? "최신 릴리스 후 6개월 이내" 또는 "릴리스 중 9.99 "과 같은 값을 예상합니다.
  • is_property (bool) – 사용 중단된 함수가 @property인 경우, 생성된 메시지가 이를 올바르게 설명할 수 있도록 이 값을 True로 설정하십시오. (속성 세터(property setters)의 경우, Python가 해당 docstring을 무시하므로 이 작업은 필요하지 않습니다.)
  • stacklevel (int) – 스택 레벨이 전달된 warnings.warn().

리턴

장식된 콜러블입니다.

리턴 유형

호출 가능


SI 단위 변환

apply_prefix

qiskit.utils.apply_prefix(value, unit)

GitHub

SI 단위 접두사와 값이 주어지면 접두사를 적용하여 표준 SI 단위로 변환합니다.

매개변수

리턴

변환된 값입니다.

리턴 유형

float | ParameterExpression

참고

플로트 객체의 내부 표현으로 인해 작은 값 오류가 발생할 수 있습니다. 참조 https://docs.python.org/3/tutorial/floatingpoint.html 를 참조하세요.

레이즈

ValueError – 만약 가 인식되지 unit 않는다면.

매개변수

리턴 유형

float | ParameterExpression

detach_prefix

qiskit.utils.detach_prefix(value, decimal=None)

GitHub

SI 단위 값이 주어지면 값의 크기를 조정하는 데 가장 적합한 접두사를 찾습니다.

예를 들어 value = 1.3e8(130.0, "M") 의 튜플로 변환되며, 이는 값을 표시하는 데 사용할 수 있는 배율된 값과 보조 단위를 나타냅니다. 위의 예에서 해당 값은 130 MHz (여기서는 단위가 임의적임)로 표시될 수 있습니다.

예제

>>> value, prefix = detach_prefix(1e4)
>>> print(f"{value} {prefix}Hz")
10 kHz

매개변수

  • value (float) – 접두사를 찾을 번호입니다.
  • decimal (int | None) – 선택 사항입니다. 값의 정밀도를 나타내는 임의의 정수입니다. 지정하면 맨티사를 반올림하고 접두사를 반올림된 값으로 조정합니다. 예를 들어 999_999.91 은 decimal=4 을 사용하면 999.9999 k 가 되고 1.0 M 은 decimal=3 이하가 됩니다.

리턴

스케일링된 값과 접두사의 튜플입니다.

리턴 유형

튜플[ float, str ]

참고

플로트 객체의 내부 표현으로 인해 작은 값 오류가 발생할 수 있습니다. 참조 https://docs.python.org/3/tutorial/floatingpoint.html 를 참조하세요.

레이즈

  • ValueError - value 주소가 범위를 벗어난 경우.
  • ValueError - value 이 실수가 아닌 경우.

매개변수

리턴 유형

튜플[ float, str ]


수업 도구

wrap_method

qiskit.utils.wrap_method(cls, name, *, before=None, after=None)

GitHub

인스턴스 또는 클래스 메서드 cls.name 를 추가 동작 beforeafter 으로 래핑합니다.

이렇게 하면 cls 속성이 변경되어 name 속성이 새 기능으로 대체됩니다. 클래스 데코레이터를 만들 때 유용합니다. 대신 모든 부모 클래스에서 메서드를 정의할 수 있습니다.

before 또는 after 중 하나가 주어진 경우, 참조된 메서드와 호환되는 서명이 있는 호출 가능 항목이어야 합니다. 메서드 바로 앞이나 뒤에 적절하게 호출되며 반환값은 무시됩니다.

매개변수

  • cls (type) – 수정할 클래스.
  • name (str) – 래핑할 클래스의 메서드 이름을 지정합니다.
  • before (Callable | None) – 포장되는 메서드가 호출되기 전에 호출되어야 하는 콜러블.
  • after (Callable | None) – 포장되는 메서드가 실행된 후에 호출되어야 하는 콜러블.

레이즈

ValueError - 클래스나 상위 클래스에 명명된 메서드가 정의되어 있지 않은 경우.


멀티프로세싱

default_num_processes

qiskit.utils.default_num_processes()

GitHub

다중 처리 병렬 호출이 기본적으로 사용하는 프로세스 수를 가져옵니다.

이러한 함수는 일반적으로 이 함수에서 반환되는 값을 대체할 num_processes 키워드 인수를 허용합니다.

반환 값은 우선순위(가장 높은 것부터 낮은 것) 순으로 표시됩니다:

  1. QISKIT_NUM_PROCS 환경 변수(설정된 경우)를 사용합니다.
  2. 키스킷 사용자 구성 파일의 num_processes 키(설정된 경우).
  3. 이 프로세스에 사용할 수 있는 논리적 CPU의 절반(이를 확인할 수 있는 경우). 이는 두 배의 동시 멀티스레딩(SMT)을 가정한 물리적 CPU 수의 프록시이며, 경험적으로 SMT 코어를 사용하려고 할 때 키스킷의 멀티프로세싱 성능이 더 떨어지는 것으로 보입니다.
  4. 1, 다른 모든 방법이 실패할 경우.

사용자가 구성한 값이 1보다 작은 숫자로 설정되어 있으면 1인 것처럼 취급됩니다.

리턴 유형

int

is_main_process

qiskit.utils.is_main_process()

GitHub

현재 프로세스가 메인 프로세스인지 확인합니다.

Python 3.8, 이는 표준 Python 계산 방식과 동일합니다:

>>> import multiprocessing
>>> multiprocessing.parent_process() is None

이 기능은 이전 버전과의 호환성을 위해 남겨져 있지만 Python 의 기본 제공 도구를 사용하지 않을 이유가 거의 없습니다.

리턴 유형

부울

local_hardware_info

qiskit.utils.local_hardware_info()

GitHub

로컬 머신에 대한 기본 하드웨어 정보입니다.

하이퍼스레딩이 켜져 있는 경우에도 컴퓨터의 물리적 CPU 수를 추정하려고 시도합니다. 실제 개수를 확인할 수 없는 경우 CPU 개수는 기본값이 1입니다.

리턴

하드웨어 정보입니다.

리턴 유형

dict

should_run_in_parallel

qiskit.utils.should_run_in_parallel(num_processes=None)

GitHub

멀티프로세싱 함수가 병렬화를 위해 하위 프로세스를 생성할지 여부를 결정합니다.

특히 parallel_map() 가 멀티프로세싱 사용 여부를 결정하는 방식입니다. num_processes 인자만으로는 병렬 처리가 적용되지 않으며, 기본적으로 키스킷은 fork 과 같은 프로세스 스폰 시작 메서드가 적용될 때만 프로세스 기반 병렬 처리를 사용합니다. 이 결정을 재정의할 수 있습니다 multiprocessing 시작 방법을 설정하거나 QISKIT_PARALLEL 환경 변수를 "TRUE" 으로 설정하거나 사용자 설정 파일에서 parallel = true 을 설정하여 이 결정을 재정의할 수 있습니다.

이 함수에는 이 함수의 반환값을 일시적으로 수정하는 데 사용할 수 있는 두 개의 컨텍스트 관리자가 포함되어 있습니다:

override

should_run_in_parallel.override(value)

GitHub

컨텍스트 관리자 should_run_in_parallel() 는 주어진 value 을 반환합니다.

이것은 완전한 오버라이드가 아닙니다. 키스킷은 단일 프로세스만 사용할 수 있는 경우 병렬화를 시도하지 않으며, 1보다 큰 깊이에서는 프로세스 기반 병렬화를 허용하지 않습니다.

매개변수

value (bool)

ignore_user_settings

should_run_in_parallel.ignore_user_settings()

GitHub

컨텍스트 관리자는 should_run_in_parallel() 는 환경 설정 변수를 무시합니다.

특히 QISKIT_PARALLEL 환경 변수와 사용자 구성 파일은 이 컨텍스트 내에서 무시됩니다.

매개변수

num_processes (int | None) – 사용 요청된 최대 프로세스 수입니다(None 기본값을 의미).

리턴 유형

부울

예제

구성된 설정을 일시적으로 재정의하여 병렬 처리를 비활성화합니다:

>>> with should_run_in_parallel.override(True):
...     assert should_run_in_parallel(8)
>>> with should_run_in_parallel.override(False):
...     assert not should_run_in_parallel(8)

를 사용하여 사용자 정의 함수를 호출하기 위한 도우미 함수 Python ProcessPoolExecutor. 이 기능을 사용하여 작업을 병렬로 실행할 수 있습니다.

parallel_map

qiskit.utils.parallel_map(task, values, task_args=(), task_kwargs=None, num_processes=None)

GitHub

함수 작업에 대한 값 매핑을 병렬로 실행합니다. 이것은 다음과 기능상으로 동일합니다.

result = [task(value, *task_args, **task_kwargs) for value in values]

values 의 수가 1보다 크면 결과를 병렬화하고 should_run_in_parallel()True 을 반환합니다. 그렇지 않은 경우 직렬로 실행됩니다.

매개변수

  • task (func) – 의 각 값에 대해 호출할 함수 values.
  • values (array_like) – task 함수를 평가할 값의 목록 또는 배열입니다.
  • task_args (list) – task 함수에 대한 선택적 추가 인수입니다.
  • task_kwargs (dict) – task 함수에 대한 추가 키워드 인수를 선택적으로 추가할 수 있습니다.
  • num_processes (int) – 스폰할 프로세스 수입니다. 지정하지 않으면 반환값 default_num_processes() 의 반환값이 사용됩니다.

리턴

결과 목록에는 values 의 각 값에 대해 task(value, *task_args, **task_kwargs) 의 값이 포함됩니다.

리턴 유형

결과

예제

import time
from qiskit.utils import parallel_map
def func(_):
        time.sleep(0.1)
        return 0
parallel_map(func, list(range(10)));

선택적 종속성 검사기

키스킷에는 특정 선택적 종속성을 충족하는 경우에만 활성화되는 몇 가지 기능이 있습니다. 이 모듈, qiskit.utils.optionals에는 특정 기능을 사용할 수 있는지 테스트하는 데 사용할 수 있는 객체 컬렉션이 있으며, 기능을 사용할 수 없는 경우 선택적으로 MissingOptionalLibraryError 를 반환합니다.

사용 가능한 테스터

Qiskit 구성 요소

qiskit.utils.optionals.HAS_AER

Qiskit Aer는 Qiskit 내에서 구축된 양자 회로를 위한 고성능 시뮬레이터를 제공합니다.

qiskit.utils.optionals.HAS_IBMQ

Qiskit IBMQ Provider 은 IBM 클라우드의 IBM 퀀텀 하드웨어에 액세스하는 데 사용됩니다.

qiskit.utils.optionals.HAS_IGNIS

Qiskit Ignis 는 양자 하드웨어 검증, 노이즈 특성화 및 오류 수정을 위한 도구를 제공합니다.

qiskit.utils.optionals.HAS_TOQM

키스킷 TOQM은 시간 최적 큐비트 매핑 알고리즘을 위한 트랜스파일러 패스를 제공합니다.

외부 Python 라이브러리

qiskit.utils.optionals.HAS_CONSTRAINT

python-constraint는 트랜스파일러 단계에서 CSPLayout 사용되는 제약 조건 만족 문제 해결기입니다.

qiskit.utils.optionals.HAS_CPLEX

IBM 의 CPLEX 최적화기는 선형, 혼합 정수 및 2차 계획법 문제를 해결하는 고성능 수학적 계획법 솔버입니다. 이 기능은 더 이상 Qiskit에서 사용되지 않지만, 과거에는 사용되었기 때문에 하위 호환성을 위해 optional 속성이 남아 있습니다.

qiskit.utils.optionals.HAS_CVXPY

CVXPY는 볼록 최적화 문제를 해결하기 위한 Python 패키지입니다. 를 사용하여 다이아몬드 규범을 계산하는 데 필요합니다 quantum_info.diamond_norm().

qiskit.utils.optionals.HAS_DOCPLEX

IBM Decision Optimization CPLEX Modelling은 처방적 분석을 위한 라이브러리입니다. CPLEX와 마찬가지로, 이 기능은 더 이상 Qiskit에서 사용되지 않지만, 과거에는 사용되었기 때문에 하위 호환성을 위해 선택 사항으로 남아 있습니다.

qiskit.utils.optionals.HAS_FIXTURES

테스트 스위트에는 옵션으로 제공되는 픽스처 모듈을 설치한 경우 사용할 수 있는 추가 기능이 있습니다. 여기에는 일반적으로 HAS_TESTTOOLS 도 필요합니다. 이는 일반적으로 키스킷 개발자에게만 필요합니다.

qiskit.utils.optionals.HAS_IPYTHON

IPython 커널을 사용할 수 있는 경우 특정 추가 시각화 및 라인 마법을 사용할 수 있습니다.

qiskit.utils.optionals.HAS_IPYWIDGETS

외부 백엔드에서 실행되는 작업에 대한 모니터링 위젯은 ipywidgets를 사용할 수 있는 경우 제공할 수 있습니다.

qiskit.utils.optionals.HAS_JAX

opflow.gradients 내의 일부 그라디언트 계산 방법에는 자동 차별화를 위해 JAX가 필요합니다.

qiskit.utils.optionals.HAS_JUPYTER

일부 테스트는 대화형 기능을 테스트하기 위해 Jupyter를 완전히 설치해야 합니다.

qiskit.utils.optionals.HAS_MATPLOTLIB

키스킷은 모듈에서 몇 가지 시각화 도구를 제공합니다 visualization 모듈에서 여러 시각화 도구를 제공합니다. 이들 중 거의 대부분은 Matplotlib 를 사용하며, 이를 사용하려면 반드시 설치해야 합니다.

qiskit.utils.optionals.HAS_NETWORKX

더 이상 키스킷에서 사용하지 않습니다. 내부적으로 키스킷은 이제 고성능 rustworkx 라이브러리를 핵심 종속 요소로 사용하며, 전환 기간 동안에는 Python -only로 변환하는 것이 편리하기도 했습니다 NetworkX 형식으로 변환하는 것이 편리하기도 했습니다. 키스킷 네이처와 같은 애플리케이션 모듈의 일부 테스트는 여전히 NetworkX 을 사용합니다.

qiskit.utils.optionals.HAS_NLOPT

NLopt는 algorithms.optimizers 모듈의 글로벌 옵티마이저에서 사용하는 비선형 최적화 라이브러리입니다.

qiskit.utils.optionals.HAS_PIL

PIL은 Python 기반의 이미지 처리 라이브러리입니다. Qiskit은 특정 시각화(예를 들어, 특정 모드에서 와 DAGCircuit 모두 QuantumCircuit )를 생성할 때, PIL의 pillow 포크가 사용 가능한 경우 이를 실제로 사용합니다.

qiskit.utils.optionals.HAS_PYDOT

일부 그래프 시각화의 경우, 키스킷은 pydot을 GraphViz 인터페이스( HAS_GRAPHVIZ).

qiskit.utils.optionals.HAS_PYGMENTS

Pygments는 스핑크스, 주피터 등 코드 블록을 풍부하게 표시해야 하는 많은 환경에서 사용되는 코드 형광펜 및 포맷터입니다. 키스킷은 이러한 환경에서 리치 출력을 생성할 때 이를 사용합니다.

qiskit.utils.optionals.HAS_PYLATEX

다양한 LaTeX-based 시각화, 특히 회로도 서랍이 올바르게 작동하려면 pylatexenc 프로젝트에 액세스해야 합니다.

qiskit.utils.optionals.HAS_QASM3_IMPORT

기능 qasm3.load()qasm3.loads() 3 프로그램을 OpenQASM 으로 가져오기 위해 QuantumCircuit 인스턴스는 외부 임포터 패키지를 사용합니다.

qiskit.utils.optionals.HAS_SEABORN

키스킷은 모듈에서 몇 가지 시각화 도구를 제공합니다 visualization 모듈에서 여러 시각화 도구를 제공합니다. 이 중 일부는 Seaborn을 사용하여 제작되었으며, 이를 사용하려면 반드시 설치해야 합니다.

qiskit.utils.optionals.HAS_SKLEARN

opflow.gradients 의 일부 그라데이션 함수는 Scikit Learn의 정규화 방법을 사용합니다.

qiskit.utils.optionals.HAS_SKQUANT

algorithms.optimizers 의 일부 옵티마이저는 Scikit Quant에 있는 옵티마이저를 기반으로 하며, 이를 사용하려면 반드시 설치해야 합니다.

qiskit.utils.optionals.HAS_SQSNOBFIT

SQSnobFit 는 "분기 및 맞춤에 의한 안정적인 노이즈 최적화" 알고리즘을 위한 라이브러리입니다. SNOBFIT 최적화 프로그램에서 사용합니다.

qiskit.utils.optionals.HAS_SYMENGINE

Symengine는 기호 연산 라이브러리인 Sympy를 위한 고속 C++ 백엔드입니다. Parameter이 종속성은 레거시 QPY 형식을 불러오는 데 사용되며, 해당 패키지에서는 s를 처리하는 데 사용되었습니다.

qiskit.utils.optionals.HAS_SYMPY

SymPy Python 용 기호 수학 라이브러리입니다. SymPy 역사적으로는 해당 ParameterExpression 클래스의 구현에 사용되었으나, 이제는 더 이상 사용되지 않습니다. ParameterExpression.sympify()하지만.을 사용하는 일부 구형 기능에서는 이것이 필요합니다. 또한 일부 시각화 함수와 템플릿 매칭에도 사용됩니다.

qiskit.utils.optionals.HAS_TESTTOOLS

키스킷의 테스트 스위트는 옵션으로 제공되는 테스트 도구 라이브러리를 설치하면 더 고급 기능을 사용할 수 있습니다. 이는 일반적으로 키스킷 개발자에게만 필요합니다.

qiskit.utils.optionals.HAS_TWEEDLEDUM

Tweedledum은 고전 오라클이 포함될 수 있는 회로의 합성 및 최적화를 위한 확장 라이브러리입니다. 과거에는 Qiskit에서 PhaseOracle 이를 사용했지만, 현재는 Qiskit에서 더 이상 사용하지 않습니다.

qiskit.utils.optionals.HAS_Z3

Z3 는 정리 증명기로, 및 HoareOptimizer 트랜스파일러 단계에서 CrosstalkAdaptiveSchedule 사용됩니다.

외부 명령줄 도구

qiskit.utils.optionals.HAS_GRAPHVIZ

일부 그래프 시각화의 경우, 키스킷은 인터페이스를 통해 GraphViz 시각화 도구를 사용한다( pydot 인터페이스( HAS_PYDOT).

qiskit.utils.optionals.HAS_PDFLATEX

회로도 서랍과 같이 출력에 LaTeX 을 사용하는 시각화 도구는 pdflatex 을 사용할 수 있어야 합니다. 일반적으로 LaTeX 설치가 정상적으로 작동하는지, qcircuit.tex 패키지가 설치되어 있는지 확인해야 합니다.

qiskit.utils.optionals.HAS_PDFTOCAIRO

LaTeX-generated 파일을 래스터화된 이미지로 변환하는 시각화 도구는 pdftocairo 도구를 사용합니다. 이것은 Poppler PDF 도구 제품군의 일부입니다.

게으른 검사자 클래스

각각의 게으른 체커는 두 개의 서브 클래스 중 하나에서 LazyDependencyManager 의 인스턴스입니다: LazyImportTesterLazySubprocessTester. 필요한 경우 다음에서 직접 가져와야 합니다 utils 에서 직접 가져와야 합니다:

from qiskit.utils import LazyImportTester

LazyDependencyManager

class qiskit.utils.LazyDependencyManager(*, name=None, callback=None, install=None, msg=None)

GitHub

베이스: ABC

가져오거나 존재 여부를 확인하는 데 비용이 많이 드는 일부 선택적 기능을 관리하는 도구입니다.

이러한 개체는 if x 과 같은 부울로 사용할 수 있으며, 테스트하는 종속성을 사용할 수 있으면 True 을, 사용할 수 없으면 False 을 평가합니다. 부울이 평가될 때만 종속성의 존재가 테스트되므로 임포트 타임 테스트 없이 함수 및 메서드에서 런타임 테스트로 사용할 수 있습니다.

이러한 객체는 종속성이 없는 경우 오류 처리도 캡슐화하므로 다음과 같은 작업을 수행할 수 있습니다:

from qiskit.utils import LazyImportManager
HAS_MATPLOTLIB = LazyImportManager("matplotlib")

@HAS_MATPLOTLIB.require_in_call
def my_visualisation():
    ...

def my_other_visualisation():
    # ... some setup ...
    HAS_MATPLOTLIB.require_now("my_other_visualisation")
    ...

def my_third_visualisation():
    if HAS_MATPLOTLIB:
        from matplotlib import pyplot
    else:
        ...

이 모든 경우 matplotlib 함수를 입력할 때까지 가져오지 않습니다. 데코레이터의 경우, matplotlib 함수가 처음 호출될 때 가져오기 테스트가 수행됩니다. 두 번째와 세 번째 경우, 로더는 matplotlib 를 가져오려고 시도합니다 require_now() 메서드가 호출되거나 부울 컨텍스트가 평가될 때 가져오기를 시도합니다. require 메서드의 경우 라이브러리를 사용할 수 없는 경우 오류가 발생합니다.

이 클래스는 부울 컨텍스트 검사 및 오류 관리를 제공하는 기본 클래스입니다. 구체적인 클래스 LazyImportTesterLazySubprocessTester 는 각각 모듈에서 특정 심볼을 가져올 수 있는지 또는 특정 명령줄 도구를 사용할 수 있는지 테스트할 수 있는 편리한 진입점을 제공합니다.

매개변수

  • 이름 - 이 선택적 종속성의 이름입니다.
  • 콜백 - 라이브러리의 가용성이 테스트된 후 결과와 함께 즉시 호출되는 콜백입니다. 한 번만 호출됩니다.
  • 설치 - 이 선택적 종속성을 설치하는 방법. 에 전달된 MissingOptionalLibraryErrorpip_install 매개변수로 전달합니다.
  • msg - 필요한 경우 발생하는 오류에 포함할 추가 메시지입니다.
_is_available

abstractmethod _is_available()

GitHub

의 서브클래스는 LazyDependencyManager 의 서브클래스는 이 메서드를 재정의하여 실제 가용성 테스트를 구현해야 합니다. 이 메서드는 부울을 반환해야 하며, 여기서 True 은 종속성을 사용할 수 있음을 나타냅니다. 이 메서드는 한 번만 호출됩니다.

리턴 유형

부울

disable_locally

disable_locally()

GitHub

종속성 관리자의 값이 False 이 되는 컨텍스트를 만듭니다. 즉, 컨텍스트 내에서 이 객체에 대한 모든 호출은 오류 발생을 포함하여 종속성을 사용할 수 없는 것처럼 동작합니다. 종속성이 이미 평가되었는지 여부에 관계없이 이 메서드를 호출하는 것은 유효합니다. 이는 테스트에서 가장 유용합니다.

require_in_call

require_in_call(feature_or_callable: Callable) → Callable

require_in_call(feature_or_callable: str) → Callable[[Callable], Callable]

GitHub

데코레이션된 함수나 메서드가 호출될 때 종속성을 사용할 수 있어야 하는 콜러블에 대한 데코레이터를 만듭니다.

매개변수

feature_or_callable (str or Callable) – 이러한 종속성을 필요로 하는 기능의 이름입니다. 이 함수가 데코레이터로 직접 호출되는 경우(예: @HAS_X.require_in_call("my feature") 대신 @HAS_X.require_in_call ), 기능 이름은 함수 이름 또는 클래스 및 메서드 이름으로 적절하게 사용됩니다.

리턴

인수를 호출하기 전에 이 종속성을 필요로 하는 데코레이터가 필요합니다.

리턴 유형

호출 가능

require_in_instance

require_in_instance(feature_or_class: type) → type

require_in_instance(feature_or_class: str) → Callable[[type], type]

GitHub

종속성이 필요한 클래스 데코레이터는 클래스가 초기화될 때 사용할 수 있습니다. 이 데코레이터는 클래스에서 __init__ 메서드를 정의하지 않더라도 사용할 수 있습니다.

매개변수

feature_or_class (str orType) – 이러한 종속성을 필요로 하는 기능의 이름입니다. 이 함수가 데코레이터로 직접 호출되는 경우(예: @HAS_X.require_in_instance("my feature") 대신 @HAS_X.require_in_instance ), 기능 이름이 클래스 이름으로 사용됩니다.

리턴

클래스가 초기화될 때 래핑된 기능이 있는지 확인하는 클래스 데코레이터입니다.

리턴 유형

호출 가능

require_now

require_now(feature)

GitHub

이 객체의 종속성을 열심히 임포트하려고 시도하고 임포트할 수 없는 경우 예외를 발생시킵니다.

매개변수

feature (str) – 이러한 종속성을 필요로 하는 기능의 이름입니다.

레이즈

MissingOptionalLibraryError - 종속성을 가져올 수 없는 경우

LazyImportTester

class qiskit.utils.LazyImportTester(name_map_or_modules, *, name=None, callback=None, install=None, msg=None)

GitHub

베이스: LazyDependencyManager

가져올 수 있는 Python 모듈에 대한 지연 종속성 테스터입니다. 모든 필수 오브젝트는 해당 오브젝트의 부울 값을 테스트하는 시점에서만 임포트됩니다.

매개변수

  • name_map_or_modules (str |dict[str, Iterable[str]] | Iterable[str]) – 이름 맵인 경우, 키는 모듈이나 패키지이고 값은 해당 모듈에서 가져오려고 시도할 이름들의 반복 가능한 객체로 구성된 사전입니다. ...라고 쓰는 것이 타당할 from <module> import <name1>, <name2>, ... 것입니다. 단순히 문자열이거나 문자열의 반복 가능한 객체라면, 각각에 대해 를 import <module> 작성하는 것이 유효해야 합니다.
  • name (str | None) – 이 선택적 종속성의 이름.
  • callback (Callable[[bool], None] | None) – 라이브러리의 사용 가능 여부를 확인한 직후, 그 결과를 바탕으로 호출되는 콜백입니다. 이 함수는 단 한 번만 호출됩니다.
  • install (str | None) – 이 선택적 종속성을 설치하는 방법. pip_install 매개변수 로 MissingOptionalLibraryError 전달되었습니다.
  • msg (str | None) – 필요한 경우, 발생된 오류에 포함될 추가 메시지.

레이즈

ValueError - 모듈이 제공되지 않으면

LazySubprocessTester

class qiskit.utils.LazySubprocessTester(command, *, name=None, callback=None, install=None, msg=None)

GitHub

베이스: LazyDependencyManager

명령줄 도구를 사용할 수 있는 지연 검사기입니다. 이 명령은 이 객체의 부울 값이 확인되는 시점에 한 번만 실행됩니다.

매개변수

  • command (str |Iterable[str]) – 실행할 명령어를 구성하는 문자열. 예를 들어, ["pdflatex", "-version"]입니다.
  • name (str | None) – 이 선택적 종속성의 이름.
  • callback (Callable[[bool], None] | None) – 라이브러리의 사용 가능 여부를 확인한 직후, 그 결과를 바탕으로 호출되는 콜백입니다. 이 함수는 단 한 번만 호출됩니다.
  • install (str | None) – 이 선택적 종속성을 설치하는 방법. pip_install 매개변수 로 MissingOptionalLibraryError 전달되었습니다.
  • msg (str | None) – 필요한 경우, 발생된 오류에 포함될 추가 메시지.

레이즈

ValueError - 빈 명령이 주어지면

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.