python 如何进行线程间通信

2025-10-03 00:12:58

1、选择使用queue(队列)库

使用queue库能够保证数据的安全及软件的稳定。

如图是源码queue的简介

python 如何进行线程间通信

2、使用消费者和生成者模式:

这是测试线程通信经典的模式。

设置这两个函数,

一个专门生成数据

一个专门使用数据

python 如何进行线程间通信

3、为了能够使线程正确退出,

我们需要设置一个终止的变量,

生成这结束的时候,发送这个变量,

而消费者接收到后,结束程序,

所以将生成这和消费者改为如图:

python 如何进行线程间通信

4、然后我们定义两个线程,

及队列。

并启动线程。

如下:

q = Queue()

t1 = Thread(target=consumer, args=(q,))

t2 = Thread(target=producer, args=(q,))

t1.start()

t2.start()

python 如何进行线程间通信

5、最后的总体代码如下:

#!/usr/bin/env python

# coding=utf-8

# test for tread 线程 通信

#创建一个给线程执行的函数

from queue import Queue

from threading import Thread

import time

_sentinel = object()

# A thread that produces data

def producer(out_q):

    n = 0

    while True:

        n += 1

        time.sleep(1)

        print("producer:",n)

        # 产生数据到队列里

        out_q.put(n)

        if n >= 5:

            #表示生产线程结束

            out_q.put(_sentinel)

            break        

    print("producer done")

# A thread that consumes data

def consumer(in_q):

    while True:

        data = in_q.get()

        # 出来数据 the data

        if data is _sentinel:

            in_q.put(_sentinel)

            break

        else:

            print("consumer:",data)

    print("consumer done")

#设置共享的队列q,然后启动两个线程:消费者和生成者

q = Queue()

t1 = Thread(target=consumer, args=(q,))

t2 = Thread(target=producer, args=(q,))

t1.start()

t2.start()

具体参考图片:

python 如何进行线程间通信

6、测试

使用cmd 测试此程序

进入到文件目录下

直接运行脚本,

详细见输出文件

python 如何进行线程间通信

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢