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

原创
小哥 3年前 (2022-10-29) 阅读数 7 #大杂烩

目录

1.创建两个流程:

2.示例代码演示:

3.其他:


1.创建两个流程:

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

2,创建两个函数write、read分别向队列添加数据和从队列读取数据。条目的格式是队列。

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

4,由队列的实例创建。write_data和read_data进程。

2.示例代码演示:

"""
用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)

3.其他:

队列的作用:

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() 这实际上意味着要等到队列空了再做其他事情。
版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除