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

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

目录

一、创建两个进程:

二、实例代码演示:

三、其他:


一、创建两个进程:

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() 实际上意味着等到队列为空,再执行别的 *** 作

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/740535.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存