Unlike subprocess.Popen, multiprocessing.Process doesn’t have a send_signal method. Why? Is there a recommended way to send signals like SIGINT to multiprocessing.Process? Should I use os.kill() for that purpose? Thanks in advance.
Your first question makes total sense.
I think that’s because
subprocess libraries have different design goals (as explained by this answer) : the former is for making multiple Python scripts cooperate over different CPUs for achieving a common task, while the latter is for integrating external programs in your Python program. Because IPC (inter-process communication) is far easier between cooperating Python multiprocesses (there are queues and pipes, you can pass Python objects as arguments, …) than with an external program which we can only assume to adhere to the OS interface (textual
stdout, should handle signals correctly, …).
The default way to communicate with another multiprocess is thus not an OS signal, so that it was not considered useful to integrate it.
Also remember that (C)Python is OpenSource, so you could contribute this integration yourselves.
As for your second question, there already is an answer (cf How can I send a signal from a python program?), yes :