Buffered pipe through shared memory.
Project description
buffered_pipe
Buffered pipe through shared memory.
core features
Pipe: alias forGeneric_PipeGeneric_Pipe: free-length data, bytes or picklableStatic_Pipe: fixed length data, only bytes supported
install
pip install buffered-pipe
usage
- Generic_Pipe
import multiprocessing
import threading
from buffered_pipe import Generic_Pipe
def foo(barrier, pipe_send):
pipe_send.register()
barrier.wait()
pipe_send.send("Hello, world!")
def bar(barrier, pipe_recv):
pipe_recv.register()
barrier.wait()
print(pipe_recv.recv())
if __name__ == "__main__":
barrier = multiprocessing.Barrier(3)
pipe_recv, pipe_send = Generic_Pipe(
buffer_size=2048, duplex=False
)
P = multiprocessing.Process(target=foo, args=(barrier, pipe_send))
T = threading.Thread(target=bar, args=(barrier, pipe_recv))
P.start()
T.start()
barrier.wait()
P.join()
T.join()
- Static_Pipe
import multiprocessing
import threading
from buffered_pipe import Static_Pipe
def foo(barrier, pipe_send):
pipe_send.register()
barrier.wait()
ret_string = "Hello, world!"
ret_string = ret_string + " " * (32 - len(ret_string))
ret_string = ret_string.encode()
pipe_send.send(ret_string)
def bar(barrier, pipe_recv):
pipe_recv.register()
barrier.wait()
ret_string = pipe_recv.recv()
print(ret_string.decode())
if __name__ == "__main__":
barrier = multiprocessing.Barrier(3)
pipe_recv, pipe_send = Static_Pipe(object_size=32, object_count=16, duplex=False)
P = multiprocessing.Process(target=foo, args=(barrier, pipe_send))
T = threading.Thread(target=bar, args=(barrier, pipe_recv))
P.start()
T.start()
barrier.wait()
P.join()
T.join()
- When you create a
processorthread, callregisterofPipe - The
buffer_sizeofGeneric_Pipeis inbytes. - The
object_sizeofStatic_Pipeis inbytes. object_countinStatic_Pipeis the maximum number of objects placed in the buffer.duplexis equivalent tomultiprocessing.Pipe.
tests
> benchmark_result.txt
for f in benchmarks/*.py; do python3 "$f" &>> benchmark_result.txt; done
> test_result.txt
for f in tests/*.py; do python3 "$f" &>> test_result.txt; done
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
buffered_pipe-0.1.0.tar.gz
(11.5 kB
view details)
File details
Details for the file buffered_pipe-0.1.0.tar.gz.
File metadata
- Download URL: buffered_pipe-0.1.0.tar.gz
- Upload date:
- Size: 11.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bebe659c1709c7042fb5dd3a5e6794e634340fc027edec607306e3bdb0d0a6d7
|
|
| MD5 |
48fd5875984962fa4e9844c59588ae17
|
|
| BLAKE2b-256 |
13ca88ac9ba03ccba7bf74989682e015030e5bbfff40d8160b665390e158f524
|