A simple python interface for inter-process communication, a way to asynchronously exchange data with external programs at runtime. The internal mechanism functions by writing data to stdout and reading from stdin using multi threading.
pip install simple-ipc
Import the module first:
import ipc
from ipc import Worker
Worker(command, callback=None, start=True, verbose=False)
-
command
a path to an executable along with optional arguments- list: may include spaces
- str: no support for spaces
-
callback
(optional) a function that is called after new data has been received- must take exactly one argument
-
start
(optional) start the worker automatically when created -
verbose
(optional) print status messages
worker = Worker(['with space.exe', 'spaced arg'], start=False)
with Worker('program.exe', verbose=True) as worker:
...
Worker('path/to/program.exe arg', lambda data: print(data))
All data will be converted to type str
internally.
start()
starts the workersend(data)
sends the data to the external processstop()
initiates the termination of all threads and clears all data
running
indicates the status of the worker (read-only)data
contains the most recent value (read-only)
from random import randint
from ipc import Worker
def process(data):
if int(data) == 5:
print('Process data...')
worker = Worker('program.exe', process)
while worker.running:
number = randint(1, 10)
worker.send(number)
print(f'Data: {worker.data}')
More example code can be found here.