ProActiveKernel for Jupyter
- Python 2 or 3
2.1 Using Pypi
open a terminal
install the proactive jupyter kernel
$ pip install proactive-kernel --upgrade
2.2 Using source code
open a terminal
clone the repository on your local machine:
$ git clone firstname.lastname@example.org:ow2-proactive/proactive-jupyter-kernel.git
install the proactive jupyter kernel:
$ pip install proactive-jupyter-kernel/ $ python -m proactive-jupyter-kernel.install
You can use any jupyter platform. We recommend the use of jupyter lab. To launch it from your terminal after having installed it:
$ nohup jupyter lab &>/dev/null &
When opened, click on the Proactive icon to open a notebook based on the proactive kernel.
4.1 Using connect()
If you are trying proactive for the first time, please sign up on try platform.
Once you receive your login and password, connect using the
To connect to another host, use the later pragma this way:
#%connect(host=YOUR_HOST, port=YOUR_PORT, login=YOUR_LOGIN, password=YOUR_PASSWORD)
4.2 Using config file:
For automatic sign in, create a file named 'proactive_config.ini' in your notebook's location.
Fill your configuration file according to the format:
[proactive_server] host = YOUR_HOST port = YOUR_PORT [user] login = YOUR_LOGIN password = YOUR_PASSWORD
Save your file changes and restart the proactive kernel.
You can also force the current Kernel to connect using any .ini config file through the
(for more information about this format please check configParser)
5.1 Creating a Python task
To create a task, write your python implementation into a notebook block code (a default name will be given to the created task):
Or you can provide more information about the task by using the
#%task(name=TASK_NAME) print('Hello world')
5.2 Adding a fork environment
To configure a fork environment for a task, use the
#%fork_env() pragma. A first way to do this
is by providing the name of the corresponding task, and the fork environment implementation after that:
#%fork_env(name=TASK_NAME) containerName = 'activeeon/dlm3' dockerRunCommand = 'docker run ' dockerParameters = '--rm ' paHomeHost = variables.get("PA_SCHEDULER_HOME") paHomeContainer = variables.get("PA_SCHEDULER_HOME") proActiveHomeVolume = '-v '+paHomeHost +':'+paHomeContainer+' ' workspaceHost = localspace workspaceContainer = localspace workspaceVolume = '-v '+localspace +':'+localspace+' ' containerWorkingDirectory = '-w '+workspaceContainer+' ' preJavaHomeCmd = dockerRunCommand + dockerParameters + proActiveHomeVolume + workspaceVolume + containerWorkingDirectory + containerName
A second way is by providing the name of the task, and the path of a .py file containing the fork environment code:
5.3 Adding a selection script
To add a selection script to a task, use the
#%selection_script() pragma. A first way to do it,
provide the name of the corresponding task, and the selection code implementation after that:
#%selection_script(name=TASK_NAME) selected = True
A second way is by providing the name of the task, and the path of a .py file containing the selection code:
5.4 Create a job
To create a job, use the
If the job was already been created, the call of this pragma would just rename the job already created by the new provided name.
Notice that it is not necessary to create and name explicitly the job. If not done by the user, this step is implicitly performed when the job is submitted (check next section).
5.5 Submit your job to the scheduler
To finally submit the job to the proactive scheduler, the user has to use the
If the job is not created, or is not up-to-date, the
#%submit_job() starts by creating a new job named as the old one.
To provide a new name, use the same pragma and provide a name as parameter:
If the kernel, during its execution, never received a job name, he uses the current notebook name, if possible, or gives a random one.
The returned values of your final tasks will be automatically printed in the notebook results.
- connect, task, selection_script, fork_env, job, submit_job
- connection using a configuration file
- get and print results implicitly in submit_job
- add task dependency
- less spaces sensitivity in pragma's parsing
- get_results pragma
- check how to use NetworkX for plotting graphs
- check how to highlight Python syntax