Python面试题--第65道题目--用Python创建两个进程,在这两个进程之间如何通信--2022年04月20日

本文通过Python的multiprocessing模块演示了如何创建两个进程,一个用于向队列写入数据,另一个用于从队列读取数据。通过队列实现进程间的通信,展示了队列在解耦和提高效率方面的优势。示例代码详细展示了具体的实现步骤,包括队列的创建、进程的启动和同步。

目录

一、创建两个进程:

二、实例代码演示:

三、其他:


一、创建两个进程:

1、导入一个模块:from multiprocessing import Queue, Process,队列和进程,通过队列在两个进程之间通信。

2、创建两个函数write、read,分别是向队列中增加数据,从队列中读取数据。入参的格式为队列。

3、aa = Queue() 创建队列的实例。

4、通过队列的实例创建write_data和read_data进程。

二、实例代码演示:

"""
用Python创建两个进程,在这两个进程之间如何通信?
"""

from multiprocessing import Queue, Process
import time, random


list1 = ["java", "python", "sql"] # 列表是数据源
def write(qq): # 向队列中添加数据,qq入参是一个队列,其他的不行
    for value in list1:
        print(f"正向队列中添加数据--->{value}")
        qq.put_nowait(value)
        time.sleep(random.random()) # 睡眠随机零点几秒
        # time.sleep(5) # 睡眠5秒

def read(qq): # 从队列中获取数据,qq入参是一个队列,其他的不行
    while True:
        if not qq.empty():
            value = qq.get_nowait()
            print(f"从队列中读取数据--->{value}")
            time.sleep(random.random())
        else:
            break

if __name__ == '__main__':
    aa = Queue() # 创建队列的实例
    write_data = Process(target=write, args=(aa,)) # 通过队列创建进程write_data
    read_data = Process(target=read, args=(aa,)) # 通过队列创建进程read_data

    write_data.start() # 启动进程
    write_data.join() # join()作用是等待上面程序完成
    read_data.start()
    read_data.join()
    print('ok')

三、其他:

队列的作用:

1、解耦,使程序实现松耦合(一个模块修改不会影响其他模块)

2、提高效率

  • queue.put(item) 写入队列,timeout等待时间
  • queue.put_nowait(item) 相当queue.put(item, False)
  • queue.get([block[, timeout]])获取队列,timeout等待时间
  • queue.get_nowait() 相当queue.get(False)
  • queue.join() 实际上意味着等到队列为空,再执行别的操作
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值