- 套接字(socket–插座)
1)通过一个协议,链接两个进程,主要是网络请求。
2)进程A向百度云上传文件,进程B向百度云下载文件,不会有冲突 - 管道
1)用文件的内存缓存区作为管道,实现进程间通信
- 匿名管道
主进程和子进程进行交互
- 具名管道
和匿名管道原理是一样的。不是不相关的进程也可以互相访问。

- 消息队列
就是一个存在内核内存空间中的列表。 (这就是它最原始的定义)
redis就是消息队列+socket
def save_to_queue(index,my_queue):
my_queue.put(index)
if __name__ == '__main__':
process_array = []
my_queue = Queue()
for i in range(10):
p = Process(target=save_to_queue,args=(i,my_queue))
process_array.append(p)
p.start()
for p in process_array:
p.join()
while True:
print(my_queue.get())
- 共享内存
进程访问内核态同一块内存
from multiprocessingimport Queue,Array,value
- 信号量
不是用来传递数据的,是用来传递消息的
1)进程B 等待进程A执行到某一步操作后才会启动
2)进程A–》发消息–》内核—》转发信息—》进程B
本文详细介绍了套接字、管道、匿名管道、具名管道、消息队列以及共享内存等进程间通信机制。通过实例展示了如何使用Python的multiprocessing模块实现消息队列,并探讨了信号量在进程同步中的作用。这些技术在分布式系统和并发编程中起着关键作用。
632

被折叠的 条评论
为什么被折叠?



