Como evitar múltiplas instâncias de um programa?

Eu preciso encontrar um caminho certo para evitar duas instâncias em execução do meu programa (Python). Atualmente estou usando o método a seguir.

No Windows,

os.popen('wmic process get caption,processid | findstr `programname.exe`')

No Linux,

os.popen('ps x | grep `programname`')

Parece funcionar bem por enquanto. Este método está correto? Alguém pode me sugerir uma maneira melhor?

editar: Obrigado pela resposta pessoal, há algo de errado com os métodos acima? Eu tentei o caminho do arquivo pid para o Linux. E se o arquivo pid for deletado de alguma forma?

questionAnswers(3)

yourAnswerToTheQuestion