Data unchanged when passing data to Python in multiprocessing shared memory
Avi Gross
avigross at verizon.net
Wed Feb 2 13:16:07 EST 2022
I applaud trying to find the right solution but wonder if a more trivial solution is even being considered. It ignores big and little endians and just converts your data into another form and back.
If all you want to do is send an integer that fit in 32 bits or 64 bits, why not convert it to a character string in a form that both machines will see the same way and when read back, convert it back to an integer?
As long as both side see the same string, this can be done in reasonable time and portably.
Or am I missing something? Is "1234" not necessarily seen in the same order, or "1.234e3" or whatever?
Obviously, if the mechanism is heavily used and multiple sides keep reading and even writing the same memory location, this is not ideal. But having different incompatible processors looking at the same memory is also not.
-----Original Message-----
From: Dennis Lee Bieber <wlfraed at ix.netcom.com>
To: python-list at python.org
Sent: Wed, Feb 2, 2022 12:30 am
Subject: Re: Data unchanged when passing data to Python in multiprocessing shared memory
On Wed, 2 Feb 2022 00:40:22 +0100 (CET), Jen Kris <jenkris at tutanota.com>
declaimed the following:
>
> breakup = int.from_bytes(byte_val, "big")
>print("this is breakup " + str(breakup))
>
>Python prints: this is breakup 32894
>
>Note that I had to switch from little endian to big endian. Python is little endian by default, but in this case it's big endian.
>
Look at the struct module. I'm pretty certain it has flags for big or
little end, or system native (that, or run your integers through the
various "network byte order" functions that I think C and Python both
support.
https://www.gta.ufrj.br/ensino/eel878/sockets/htonsman.html
>However, if anyone on this list knows how to pass data from a non-Python language to Python in multiprocessing.shared_memory please let me (and the list) know.
<pondering>MMU cache lines not writing through to RAM? Can't find
anything on Google to force a cache flush</pondering> Can you test on a
different OS? (Windows vs Linux)
--
Wulfraed Dennis Lee Bieber AF6VN
wlfraed at ix.netcom.com http://wlfraed.microdiversity.freeddns.org/
--
https://mail.python.org/mailman/listinfo/python-list
More information about the Python-list
mailing list