python自带queue


from queue import Queue  # 线程安全队列


def thread_queue():
    q = Queue(3)  # 这个队列最多进多少东西
    q.put('a')
    q.put('b')  # 队列满的时候会阻塞

    print(q.get())  # get会阻塞(队列为空的时候)
    print(q.get())


def process_queue():
    # 进程安全队列
    from multiprocessing import Manager

    mgr = Manager()
    q = mgr.Queue()

    q.put('a')
    q.put('b')  # 队列满的时候会阻塞

    print(q.get())  # get会阻塞(队列为空的时候)
    print(q.get())


def func(list_proxy, string):
    list_proxy.append(string)


def process_chat():
    # 进程之间的通信: Manager对象的基本使用
    from multiprocessing import Manager, Process
    mgr = Manager()

    list_proxy = mgr.list()  # 常用的空间类型有mgr.list() mgr.dict() 、mgr.Queue()
    print(list_proxy)

    p = Process(target=func, args=(list_proxy, "1"))  # args必须是元祖
    p2 = Process(target=func, args=(list_proxy, '2'))

    p.start()
    print(list_proxy)
    p.join()
    print(list_proxy)
    p2.start()
    p2.join()
    print(list_proxy)


if __name__ == '__main__':
    process_chat()




posted @ 2019-10-16 15:20  nanaindi  阅读(351)  评论(0编辑  收藏  举报