Best (simplest) way to share data between processes
Piergiorgio Sartor
piergiorgio.sartor.this.should.not.be.used at nexgo.REMOVETHIS.de
Sat Jul 6 15:32:44 EDT 2024
On 06/07/2024 09.28, Chris Green wrote:
> I have a Raspberry Pi in my boat that uses I2C to read a number of
> voltages and currents (using ADS1115 A2D) so I can monitor the battery
> condition etc.
>
> At present various different scripts (i.e. processes) just read the
> values using the I2C bus whenever they need to but I'm pretty sure
> this (quite rarely) results in false readings because two processes
> try to read at the same time.
>
> Thus I'm looking for ways to prevent simultaneous access.
Why using "different scripts"?
Is it there any particular reason?
Maybe it would be better, if possible, to have
a single script, which, sequentially, reads
whatever needs to be read (or written).
In a loop.
This is even simpler than using a file.
bye,
pg
> One fairly obvious way is to have single process/script which reads
> the A2D values continuously and writes them to a file. All other
> scripts then read from the file as needed, a simple file lock can then
> be used to prevent simultaneous access (well, simultaneous access when
> the writing process is writing).
>
> Is this the simplest approach? Are there better ways using
> multiprocess? (They look more complicated though).
>
> The I2C bus itself has a mutex but I don't think this guarantees that
> (for example) an A2D reading is atomic because one reading takes more
> than one I2C bus access.
>
> Would a mutex of some sort around each I2C transaction (i.e. complete
> A2D reading) be a better way to go?
>
--
piergiorgio
More information about the Python-list
mailing list