-
Notifications
You must be signed in to change notification settings - Fork 0
Update PyQrack.run
to match RFC
#225
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Codecov ReportAttention: Patch coverage is
📢 Thoughts on this report? Let us know! |
☂️ Python Coverage
Overall Coverage
New FilesNo new covered files... Modified Files
|
shots: int = 1, | ||
args: tuple[Any, ...] = (), | ||
kwargs: dict[str, Any] = {}, | ||
return_iterator: bool = False, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what's the use case of return_iterator
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This goes back to the discussion of memory conservation, if you return a register that will mean the full state will persist in memory if you store the simulator object in a list whereas if you return an iterator you have the option of only using the simulator object for that iteration and the gc can clean it up. Also, we get this for free since we need to loop for each shot anyway its just a slight difference in implementation.
The result of the simulation. If `return_iterator` is True, | ||
an iterator that yields results for each shot is returned. | ||
Otherwise, a list of results is returned if `shots > 1`, or | ||
a single result is returned if `shots == 1`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure if returning different data type here is a good idea. should we always return list
or Iterator[RetType]
? Maybe Iterable[RetType]
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a typo It should be Iterable
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One option is we just always return the Iterable
and then just let people capture those values into a list by default:
result = list(device.run(...))
Closes QuEraComputing/bloqade#220