python学习笔记(进程间通信、多进程和多线程总结)

本文总结了Python中的进程间通信,包括生产者消费者模型、管道和分布式进程。详细介绍了进程与线程的概念、区别,以及各自在数据共享、内存、CPU利用率、创建销毁、编程调试和可靠性方面的优劣。还探讨了进程间通信和线程间通信的不同方式,最后给出了何时选择多线程或多进程的建议。
摘要由CSDN通过智能技术生成

进程间通信之生产者消费者模型

import multiprocessing
# 线程通信=====(队列) ---- from queue import Queue
# 进程池中进程通信=====(队列) --- from multiprocess.Manager import Queue
# 多进程通信=========(队列)   ---- from multiprocess import Queue
import time
class Producer(multiprocessing.Process):
    def __init__(self, queue):
        super(Producer, self).__init__()
        self.queue = queue
    def run(self):
        # 将需要通信的数据写入队列中;
        for i in range(10):
            self.queue.put(i)
            time.sleep(0.1)
            print("传递消息, 内容为%s" %(i))
class Consumer(multiprocessing.Process):
    def __init__(self, queue):
        super(Consumer, self).__init__()
        self.queue = queue
    def run(self):
        while True:
            time.sleep(0.1)
            recvData = self.queue.get()
            print("接受到另一进程传递的数据: %s" %(recvData))


if __name__ == '__main__':
    q =  multiprocessing.Queue()
    p1 = Producer(q)
    c1 = Consumer(q)

    p1.start()
    c1.start()
    p1.join()
    c1.join()

在这里插入图片描述

进程间通信之管道

1). Pipe管道,进程间通信的方式, l类似于 ls | wc -l;
2). Pipe()返回两个连接对象, 分别代表管道的两边;
3). 管道通信操作的方法: send(), recv;
4). 管道间的通信是双向的, 既可以发送,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值