¿Cómo evitar múltiples instancias de un programa?

Necesito encontrar la forma correcta de evitar que se ejecuten dos instancias de mi programa (Python). Actualmente estoy usando el siguiente método.

En Windows,

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

En linux

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

Parece funcionar bien por ahora. ¿Es este método correcto? ¿Alguien puede sugerirme una mejor manera?

editar: Gracias por la respuesta, chicos, ¿hay algún problema con los métodos anteriores? He intentado la forma de archivo pid para Linux. ¿Qué pasa si el archivo pid se elimina de alguna manera?

Respuestas a la pregunta(3)

Su respuesta a la pregunta