Skip to main content

Cross-platform utils for IPC (inter-processing communication) synchronization in Python

Project description

ipc-utils

Cross-platform utils for IPC (inter-processing communication) in Python

You can create a named IPC tool like semaphore or mutex here. Onced you created here, you can use it everywhere in your computer. You can also just open a named IPC tool and use it if it has been created somewhere else before.

Installation

pip install ipc-sync

Usage

Semaphore

A named semaphore is offered.

from ipc_sync import Semaphore

sem = Semaphore("/test_sem", create = True, init_val = 1)
## or if it has been created somewhere else before
# sem = Semaphore("/test_sem", create = False)
with sem.guard():
    ... # critical section
## or if you don't want to use "with" syntax
# sem.wait()
# try:
#     ... # critical section
# finally:
#     sem.post()

sem.close()
sem.unlink() # if you want to delete the semaphore. 
             # Don't do this if you are using it somewhere else.

Once you created a named semaphore, you can use it in c/cpp like

#ifdef _WIN32
#define Semaphore HANDLE
Semaphore sem = OpenSemaphore(SEMAPHORE_ALL_ACCESS, FALSE, "/test_sem");
#else
#include <semaphore.h>
#define Semaphore sem_t
Semaphore sem = sem_open("/test_sem", 0);
#endif

Mutex

A named mutex is offered.

Note that as posix does not offer named mutex, we use named semaphore with init_val 1 instead.

from ipc_sync import Mutex

mtx = Mutex("/test_mtx", create = True)
## or if it has been created somewhere else before
# mtx = Mutex("/test_mtx", create = False)
with mtx.guard():
    ... # critical section
## or if you don't want to use "with" syntax
# mtx.acquire()
# try:
#     ... # critical section
# finally:
#     mtx.release()

mtx.close()
mtx.unlink() # if you want to delete the mutex. 
             # Don't do this if you are using it somewhere else.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ipc_sync-0.1.0.post1.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

ipc_sync-0.1.0.post1-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file ipc_sync-0.1.0.post1.tar.gz.

File metadata

  • Download URL: ipc_sync-0.1.0.post1.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.22.3 CPython/3.12.2 Windows/11

File hashes

Hashes for ipc_sync-0.1.0.post1.tar.gz
Algorithm Hash digest
SHA256 19f1aa23d6ab062a49534619bd30671fdb47c994726119b9407153a390ecf32a
MD5 a782815eb928c349ff3b624b21aaa42b
BLAKE2b-256 64a6fe612125e3ea5a1ddf51db40b59e533fcc9c038f36bb762c632ea5564fd9

See more details on using hashes here.

File details

Details for the file ipc_sync-0.1.0.post1-py3-none-any.whl.

File metadata

  • Download URL: ipc_sync-0.1.0.post1-py3-none-any.whl
  • Upload date:
  • Size: 5.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.22.3 CPython/3.12.2 Windows/11

File hashes

Hashes for ipc_sync-0.1.0.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 db2da55cac5462afd200acf3c9a30a0d85040b8cf80b8dc9815d19c33b7182c6
MD5 29870ebab76ff175c5acecf021a881fd
BLAKE2b-256 ec8158a1cf825b3aa794eb5f02a88557ed98631606ac5da699e8e87868bdc8c0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page