Caproto implements several clients, all built on the same core. This page aims to help you choose which one is best for your application.

The Synchronous Client is simplistic but functional, easy to read and understand what happens with a single operation. It is perfectly fine to use directly, but should generally not be used to build larger programs. It opts for simplicity over performance.

The Threading Client is a high-performance client and the one with the most features and testing behind it. We generally recommend this one.

The Pyepics-Compatible Client should only be used if you want to have compatibility with some existing pyepics-based code.

The Asynchronous Clients are experimental, not as robust or as feature-complete as the threading client. They may be reworked and built out in the future.

The Command-Line Client provides commandline tools (caproto-get, caproto-put, …) that are drop-in replacements for their analogues in EPICS’ reference implementation (caget, caput, …). They are backed by the synchronous client.