This has been asked several ways. No helpful answers found. I'm running Windows, but final build will run on Linux. 
I am creating an RFID reader gate system. I have 2 separate python programs.
Program 1 constantly monitors the reader which is connected via serial port (COM27). When the reader reads a badge, looks in database for user, gate opens, records data, closes.
Program 2 adds new people to a database. It only reads from the serial port when a new card is being added. (need to scan the card to get the number) for database) 
Obviously, program 2 tries to open serial port and fails. Program 1 already has it open.
I've tried creating a program 3 which handles serial communication, but importing it into the other 2 programs creates separate instances, so same issue. 
How can I create one instance of the program and have it send the read info to both programs?
the situation is very strange, but, I think, maybe you can't change your software architecture.
The only way that I think could resolve your program is to write a daemon that grabs the serial port and offer 2 files or 2 sockets or something else for each python instance.
I could do it using c++ but it is not mandatory.
Reading One Serial Port from With Two Programs : Python 3