python 进程间发送信号
时间: 2024-09-15 20:03:44 浏览: 60
Python进程间通信用法实例
在Python中,进程间通信(IPC,Inter-Process Communication)可以通过多种方式进行,其中包括信号量(Semaphore)、管道(Pipes)、队列(Queues)和消息队列(Message Queues)。其中涉及到发送信号通常是指通过`os`模块或者`multiprocessing`模块来操作。
使用`os`模块的`kill()`函数可以向另一个进程发送Unix信号。例如:
```python
import os
# 守护进程的PID
pid = os.getpid()
# 发送SIGINT(中断信号)给目标进程
os.kill(pid, signal.SIGINT)
```
在`multiprocessing`模块中,如果你想要管理子进程并发送信号,可以使用`Process`类的`terminate()`, `kill()` 或者 `join()`方法:
```python
from multiprocessing import Process, current_process
def worker():
# ... 运行一些任务
while True:
pass # 永不停止
if __name__ == '__main__':
p = Process(target=worker)
p.start()
# 需要在一段时间后才杀掉进程
time.sleep(5)
p.terminate() # 发送SIGTERM信号,试图优雅地结束进程
p.join() # 确保进程真正结束
```
阅读全文