python 如何进行线程间通信

 时间:2026-02-15 00:56:08

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 如何进行线程间通信

  • 英雄联盟终极魔典牛头酋长玩法攻略
  • WPF应用程序中ProgressBar控件的进度值如何设置
  • C# 微信公众号开发教程
  • 三国志13武将如何提升政治
  • 学习按键精灵时无法连接模拟器问题
  • 热门搜索
    abs是什么意思 图层锁定怎么解锁 饥荒木炭怎么弄 苏宁易购怎么付款 菲亚特致悦怎么样 如何去除u盘写保护 怎么退订qq会员 怎么能忘记你 如何收缩脸部毛孔 10月25日是什么星座