IPCONTROLLER(1)
β¨ ipcontroller β the manual page bestie π
okay so this is IPCONTROLLER(1), from the User Commands section of the manual (section 1, the "you can literally just run this" section). buckle up, we're starting a whole parallel-computing cluster together π«Ά
πΈ NAME πΈ
ipcontroller β starts an IPython cluster controller. that's it, that's the whole vibe. she's the one who starts the party π
π¦ DESCRIPTION π¦
okay so you wanna do parallel computing? then you start the IPython controller. periodt.
The IPython controller provides a gateway between the IPython engines and clients. so think of her as the group chat admin who relays messages between everybody, no cap. The controller needs to be started before the engines β she's the main character, everyone else shows up after her π
and you can configure her using command line options, or using a cluster directory. Cluster directories contain config, log and security files and are usually located in your ipython directory and named as "profile_name". See the profile and profile-dir options for details β iykyk β¨
π Options π
Arguments that take values are actually convenience aliases to full Configurables, whose aliases are listed on the help line. For more information on full configurables, see --help-all. (yes bestie, there's a whole extended universe of configurables hiding behind that flag π)
--log-to-fileβ send log output to a file π--debugβ set log level tologging.DEBUG(maximize logging output). she will NOT stop talking and honestly? we love that for her π--quietβ set log level tologging.CRITICAL(minimize logging output). the introvert setting π--initβ Initialize profile with default config files. This is equivalent to runningipython profile create <profile>prior to startup. like a lil starter pack π--usethreadsβ Use threads instead of processes for the schedulers π§΅--sqlitedbβ use theSQLiteDBbackend--mongodbβ use theMongoDBbackend--dictdbβ use the in-memoryDictDBbackend--nodbβ use dummy DB backend, which doesn't store any information. This is the default as of IPython 0.13. β To enable delayed or repeated retrieval of results from the Hub, select one of the true db backends. (so if you need to come back for your results later,--nodbis not gonna eat, bestie π)--reuseβ reuse existing json connection files β»οΈ--restoreβ Attempt to restore engines from a JSON file. For use when resuming a crashed controller. she's literally doing CPR on your cluster π--secureβ Use HMAC digests for authentication of messages. Setting this flag will generate a new UUID to use as the HMAC key. π--no-secureβ Don't authenticate messages. (lowkey unhinged of you but okay π«£)--ssh=<Unicode>(IPControllerApp.ssh_server) β Default:''ssh url for clients to use when connecting to the Controller processes. It should be of the form:[user@]server[:port]. The Controller's listening addresses must be accessible from the ssh server π--enginessh=<Unicode>(IPControllerApp.engine_ssh_server) β Default:''ssh url for engines to use when connecting to the Controller processes. It should be of the form:[user@]server[:port]. The Controller's listening addresses must be accessible from the ssh server π--location=<Unicode>(IPControllerApp.location) β Default:'pesto'The external IP or domain name of the Controller, used for disambiguating engine and client connections. π (and yes the default is literallypesto, we don't make the rules)--url=<Unicode>(HubFactory.url) β Default:''The 0MQ url used for registration. This sets transport, ip, and port in one variable. For example:url='tcp://127.0.0.1:12345'orurl='epgm://*:90210'π--ip=<Unicode>(HubFactory.ip) β Default:''The IP address for registration. This is generally either'127.0.0.1'for loopback only or'*'for all interfaces.--transport=<Unicode>(HubFactory.transport) β Default:'tcp'The 0MQ transport for communications. This will likely be the default of'tcp', but other values include'ipc','epgm','inproc'. π--port=<Int>(HubFactory.regport) β Default:0The port on which the Hub listens for registration.--ping=<Int>(HeartMonitor.period) β Default:3000The frequency at which the Hub pings the engines for heartbeats (in ms) π (yes, that's milliseconds, bestie, she is checking in CONSTANTLY)--scheme=<Enum>(TaskScheduler.scheme_name) β Default:'leastload'Choices:('leastload', 'pure', 'lru', 'plainrandom', 'weighted', 'twobin')select the task scheduler scheme[default: Python LRU]Options are:'pure','lru','plainrandom','weighted','twobin','leastload'π²--hwm=<Int>(TaskScheduler.hwm) β Default:1specify the High Water Mark (HWM) for the downstream socket in the Task scheduler. This is the maximum number of allowed outstanding tasks on each engine. The default (1) means that only one task can be outstanding on each engine. SettingTaskScheduler.hwm=0means there is no limit, and the engines continue to be assigned tasks while they are working, effectively hiding network latency behind computation, but can result in an imbalance of work when submitting many heterogenous tasks all at once. Any positive value greater than one is a compromise between the two. βοΈ--profile-dir=<Unicode>(ProfileDir.location) β Default:''Set the profile location directly. This overrides the logic used by theprofileoption.--profile=<Unicode>(BaseIPythonApplication.profile) β Default:'default'The IPython profile to use.--ipython-dir=<Unicode>(BaseIPythonApplication.ipython_dir) β Default:''The name of the IPython directory. This directory is used for logging configuration (through profiles), history storage, etc. The default is usually$HOME/.ipython. This option can also be specified through the environment variableIPYTHONDIR. π--log-level=<Enum>(Application.log_level) β Default:30Choices:(0, 10, 20, 30, 40, 50, 'DEBUG', 'INFO', 'WARN', 'ERROR', 'CRITICAL')Set the log level by value or name.--config=<Unicode>(BaseIPythonApplication.extra_config_file) β Default:''Path to an extra config file to load. If specified, load this config file in addition to any other IPython config. ποΈ--work-dir=<Unicode>(BaseParallelApplication.work_dir) β Default:'/home/joe'Set the working dir for the process.--log-to-file=<Bool>(BaseParallelApplication.log_to_file) β Default:Falsewhether to log to a file--clean-logs=<Bool>(BaseParallelApplication.clean_logs) β Default:Falsewhether to cleanup old logfiles before starting π§Ή--log-url=<Unicode>(BaseParallelApplication.log_url) β Default:''The ZMQ URL of the iplogger to aggregate logging.--cluster-id=<Unicode>(BaseParallelApplication.cluster_id) β Default:''String id to add to runtime files, to prevent name collisions when using multiple clusters with a single profile simultaneously. When set, files will be named like:'ipcontroller-<cluster_id>-engine.json'Since this is text inserted into filenames, typical recommendations apply: Simple character strings are ideal, and spaces are not recommended (but should generally work). π·οΈ--ident=<CUnicode>(Session.session) β Default:''The UUID identifying this session.--user=<Unicode>(Session.username) β Default:'joe'Username for the Session. Default is your system username.--keyfile=<Unicode>(Session.keyfile) β Default:''path to file containing execution key.
To see all available configurables, use --help-all. π
π₯ EXAMPLES π₯
ipcontroller --ip=192.168.0.1 --port=1000
# listen on ip, port for engines
ipcontroller --scheme=pure
# use the pure zeromq scheduler
bestie reminder: the controller goes first, always. engines and clients are the opening act, she is the headliner π
and that's the whole page!! this was ipyparallel 6.2.4, written up back in September 2020, and it's page IPCONTROLLER(1) in the User Commands corner of the manual. mwah, go start your cluster, you've got this π«Άπβ¨
π¦ where this page comes from
- debian bookworm: python3-ipyparallel 7.1.0-5 Β· BSD-3-Clause
- debian trixie: python3-ipyparallel 8.8.0-5 Β· BSD-3-Clause
- ubuntu jammy: python3-ipyparallel 7.1.0-1 Β· BSD-3-Clause
- ubuntu noble: python3-ipyparallel 7.1.0-5ubuntu1 Β· BSD-3-Clause
- ubuntu questing: python3-ipyparallel 8.8.0-5
- ubuntu resolute: python3-ipyparallel 9.0.2-1 Β· BSD-3-Clause
- ubuntu stonking: python3-ipyparallel 9.0.2-1 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms