zoukankan      html  css  js  c++  java
  • python进程间的通信

    from multiprocessing import Queue, Process
    import time, random
    
    # 要写入的数据
    list1 = ["java", "Python", "JavaScript"]
    
    
    def write(queue):
        """
        向队列中添加数据
        :param queue:
        :return:
        """
        for value in list1:
            print(f"正在向队列中添加数据-->{value}")
            # put_nowait不会等待队列有空闲位置再放入数据,如果数据放入不成功就直接崩溃,比如数据满了。put的话就会一直等待
            queue.put_nowait(value)
            time.sleep(random.random())
    
    
    def read(queue):
    
        while True:
            # 判断队列是否为空
            if not queue.empty():
                # get_nowait队列为空,取值的时候不等待,但是取不到值那么直接崩溃了
                value = queue.get_nowait()
                print(f'从队列中取到的数据为-->{value}')
                time.sleep(random.random())
            else:
                break
    
    if __name__ == '__main__':
        # 父进程创建出队列,通过参数的形式传递给子进程
        #queue = Queue(2)
        queue = Queue()
    
        # 创建两个进程 一个写数据 一个读数据
        write_data = Process(target=write, args=(queue,))
        read_data = Process(target=read, args=(queue,))
    
        # 启动进程 写入数据
        write_data.start()
        # 使用join 等待写数据结束
        write_data.join()
        # 启动进程  读取数据
        print('*' * 20)
        read_data.start()
        # 使用join  等待读数据结束
        read_data.join()
    
        print('所有的数据都写入并读取完成。。。')
    
  • 相关阅读:
    chrome手动同步书签
    MySQL(5.6/5.7版本)卸载方法
    Windows 搭建IIS+PHP+MySQL环境
    按照innode删除结点
    wsl区分大小win10不区分大小写解决方案
    Docker容器里的centos疑难杂症
    [UGUI]源码调试和修改
    [UnityAPI]EditorWindow类 & Editor类
    [UnityAPI]Selection类
    [Lua]require
  • 原文地址:https://www.cnblogs.com/c-x-a/p/10951193.html
Copyright © 2011-2022 走看看