Kon Kyri
Kon Kyri

Reputation: 159

Terminate a process by its name in Python

Lets assume that i am starting a process in python with the following code:

from multiprocessing import Process
import time

def f(name):
     print ('hello ', name)

if __name__ == '__main__':
     p = Process(target=f,name = "Process-1", args=('bob',))
     p.start()

Now,i want to terminate the process.I can simply do:

p.terminate()

However, i would like to terminate the process by its name.Is that possible?

Upvotes: 0

Views: 28

Answers (1)

Chen A.
Chen A.

Reputation: 11280

To do that, you need to store a map between your process objects and their names. Using an helper function it makes your code even easier to read (IMO):

def terminate(procname):
    return pmap[procname].terminate()

if __name__ == '__main__':
     pmap = {}
     pname = "process-1"
     p = Process(target=f,name = pname, args=('bob',))
     pmap[pname] = p
     p.start()

Then to terminate: terminate(pname)

Upvotes: 1

Related Questions