Python 线程队列

news/2024/11/25 6:19:21/

文章目录

    • Python 中的线程
    • 在 Python 中使用队列限制线程


本篇文章将介绍限制 Python 中的活动线程数。


Python 中的线程

Python 中的线程允许多个执行线程在单个进程中同时运行。 每个线程独立于其他线程运行,允许并发执行并提高性能。

线程对于执行受 I/O 限制或执行时间较长的任务特别有用,因为它允许其他线程在一个线程被阻塞时继续执行。

Python 提供了一个内置的线程模块来创建和管理线程。 模块中的 Thread 类可用于创建新的执行线程,start() 方法可用于开始线程的执行。

join() 方法可用于等待线程完成其执行。

除了 threading 模块,Python 还提供了 concurrent.futures 模块,它为异步执行可调用对象提供了更高级别的接口。 该模块提供 ThreadPoolExecutor 类,可用于创建可用于并行执行可调用对象的工作线程池。

线程可以成为提高 Python 程序性能的强大工具,但应谨慎使用,因为它还会带来复杂性以及竞争条件和其他同步问题的可能性。


在 Python 中使用队列限制线程

Python 中的 Queue 类提供了线程安全和 FIFO(先进先出)数据结构,用于存储需要多线程处理的项。 它可用于协调线程之间的数据流,并限制可同时执行的线程数。

如果我们想限制可以使用队列同时执行的线程数,我们可以使用 Queue 类内部的 maxsize 参数。 这是一个如何使用队列来限制线程总数的示例。

import threading
import queue
from queue import Queue
from threading import Threaddef function_to_be_executed():print(f"Thread {threading.get_ident()} is working")returnq = Queue(maxsize=3)for i in range(10):try:thread = Thread(target=function_to_be_executed)q.put(thread, block=False)except queue.Full:q.get().join(timeout=0)thread = Thread(target=function_to_be_executed)q.put(thread, block=False)thread = q.get()thread.start()
while not q.empty():thread = q.get()thread.join(timeout=1)

输出:

Thread 140368505984768 is working
Thread 140368497592064 is working
Thread 140368505984768 is working
Thread 140368497592064 is working
Thread 140368505984768 is working
Thread 140368497592064 is working
Thread 140368514377472 is working
Thread 140368497592064 is working
Thread 140368497592064 is working
Thread 140368497592064 is working

上面的代码创建了一个最大大小为 3 的 Queue 对象,这意味着在任何给定时间队列中只能有 3 个线程。 然后,使用 put() 方法创建 10 个线程并将其添加到队列中。

while循环一个一个启动队列中的线程,join() 方法用于等待所有线程完成。

在这个例子中,只有 3 个线程同时运行; 其余的将在队列中等待,直到他们有机会运行。 我们可以根据自己的需要调整队列的最大大小和线程数。


http://www.ppmy.cn/news/185490.html

相关文章

【Azure】微软 Azure 基础解析(八)Azure 存储服务:探索Blob存储、队列存储、文件存储的特性与适用场景

本系列博文还在更新中,收录在专栏:「Azure探秘:构建云计算世界」 专栏中。 本系列文章列表如下: 【Azure】微软 Azure 基础解析(三)描述云计算运营中的 CapEx 与 OpEx,如何区分 CapEx 与 OpEx…

android手机值多少钱,手机换屏的钱可以买个手机了,为啥成本这么贵?

手机换屏的钱可以买个手机了,为啥成本这么贵? 2020-11-23 10:54:16 0点赞 0收藏 0评论 钱人工成本。首先,更改屏幕不仅仅是更改屏幕。以iPhone为例。拆卸后,不难发现iPhone屏幕上确实有很多组件。 iPhone有扬声器,麦克…

响应式网站建设需要多少钱?

响应式布局是Ethan Marcotte在2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本。这个概念是为解决移动互联网浏览而诞生的。响应式布局可以为不同终端的用户提供更加舒适的界面和更好的用户体验&…

手机页面html字体最小多少钱,【CSS】手机端能设置小于20px的字体吗?

目前用的单位是rem,换算是(手机ui像数双倍)/(750/10),现在的一个问题是,为什么随着屏幕尺寸改变,盒子内的间距没有等比缩小,反而溢出盒子了,而且如【进入展会】按钮在iphone5下直接有部分字体看不到了&…

如何打开屏幕坏的手机_手机屏幕碎了开不起机了怎么处理,换个屏幕到底要多少钱。,???...

首先要清楚自己的手机是因为什么原因不开机。 手机不开机无外乎两种问题:硬件或者软件、系统。如果有外力,如被摔、被压、进水、过热等作用后不开机这肯定是硬件出了问题。如果是自己下载一些软件、删除一些系统文件、刷机后出现不能开机,这一…

这款智能手机比 iPhone 早13年,你猜多少钱?

据国外媒体报道,1994年一家名为 General Magic 的公司发明了世界上第一款智能手机,名为 Pocket Crystal,其比苹果 iPhone 的问世提早13年。 但是由于General Magic的产品远远超出了它所处的时代,这款智能手机的技术太过先进&#…

苹果8p电池多少毫安的_iPhone12 mini换屏幕多少钱?苹果官方更换屏幕和电池报价来了...

iPhone12 mini是大家非常关心的一款手机,主要是因为这款手机在四款iPhone12手机当中,是尺寸最小、价格最低的一款,就在这个月苹果公司就在各大平台开始销售了,对于一些预算有限的用户来讲,这款机型是非常合适入手的。不…

iphone已停用解锁大概多少钱_iPhone已停用怎么解锁?这份教程收好,不花钱!

原标题:iPhone已停用怎么解锁?这份教程收好,不花钱! iPhone已停用怎么解锁教程 在平常使用手机的时候,很多人会给自己手机设置密码,防止他人乱动手机。虽然这种方式可以在极大程度上保护我们的隐私&#xf…