ConnectMP - Taking Multi-Process Data Sharing to the moon
Contribute · Community · Documentation
🎫
Introduction :
ConnectMP is the easiest and efficient way to share data between Processes. It's superfast, can handle big datas, can create multiple data connection and really simple to get started.
ConnectMP is created out of pure Frustration of not being able to find a good solution to comminucate between Processes
🥗
Installation :
via pip (recommended) :
pip install connectmp
🧇
Quickstart : (Docs)
⚠ Please read till the end to find what you're looking for!
🍤
connectmp.Process :
from connectmp import Process
This Process class is same as multiprocessing.Process, it's just modified. So, just use connectmp.Process where you would use multiprocessing.Process
import time
from connectmp import Process
def do_something(connection):
connection.data = "Sending Some Data."
def track_data(connection):
time.sleep(1)
print(f"Track i: {connection.data}")
if __name__ == '__main__':
p1 = Process(target=do_something, connection=True)
p2 = Process(target=track_data, args=(p1.connection,))
p1.start()
p2.start()
Just let me explain what's happening here. we have 2 functions, one is do_something which just sends data and track_data which recieves the data and print's it. You can see in p1 we are not pasing any argument but our function do_something requires a connection argument.
When you enable Process(connection=True) Your target function will recieve a keyword-argument value named connection which's value will contain the Connection object. This Connection object is an individual connection. But You can of course share this connection with other process.
in p2 we shared the connection of our p1 by p1.connection which returns the connection object of p1. In track_data function we just recieve the data from p1.connection. You can send and recieve data from and to each other.
And yeah to send data all you do is assign the data to connection.data and also to get data you have to do it with connection.data
⚠
HOLD ON! You might also be looking for something like this down below!
So, if you're wondering if we can create Conenction seperately without creting Process object?
🥨
connectmp.Connection
from connectmp import Connection
You can create your own Connection with this. Let me show you how:
from connectmp import Connection
connection = Connection()
that's it! Connection! To use it just do it like how we did before, pass it as an argument and use it anywhere you want
⚠ NOTE: Make sureProcess(connection=True)is not enabled, or it will conflict with your function params. turnProcess(connection=True)when you want to create anotherConnectionand get it in the function as an argument('connection').
🌮
Example:
import time
from connectmp import Process, Connection
def do_something(connection):
connection.data = "Sending Some Data."
def track_data(connection):
time.sleep(1)
print(f"Track i: {connection.data}")
if __name__ == '__main__':
conn = Connection() # Creating connection
p1 = Process(target=do_something, args=(conn,))
p2 = Process(target=track_data, args=(conn,))
p1.start()
p2.start()
Now each Process can communicate with each other! That's all you need to know about ConnectMP. Hope this helped you
