Simple shared resource in Python
The one major problem is the lack of synchronisation between processes,
even if you randomise the sleep interval, this is still an invitation
for race conditions (unless you can somehow proof that the randomisation
is good enough).

Using a library like
lockfile or directly
using e.g. fcntl.lock will take care of that.  If you are worried
about the performance, well you are using Python, with cPickle (good
point that).  Otherwise some IPC mechanism, maybe a shared semaphore
between processes, would suffice.

Next, I think you can leave the file simply open and rewind to the
start, the read again instead of constantly closing and opening.  I'm
also not sure, but you could investigate file (region) locking via
fcntl instead to provide the necessary synchronisation.

The turn_on/turn_off seems very complicated if you could just write
out a dict, sequence, whatever, instead of doing bit manipulation.
If, however, you really want that part, then be consistent and simply
write two bytes to the file instead of using pickle.  The mixture of
very high-level serialisation and low-level composition of four bits
doesn't seem necessary at all.

Otherwise looks fine.  Some common expressions could be shared and the
written data structure is mostly used without any abstraction (like you
did with new_state, a updated_state function to create the new
dict could be nice), but I guess for a small script that hardly
matters.