python 线程 - 迭代 n 个任务时始终有 x 个活动线程

2023-12-15

我基本上想做的是:

import threading
import Queue

def test_thread(elem, q):
    q.put(elem ** 2)

a = [1,2,3,4,5,6,7,8]
q = Queue.Queue()
results = []
for x in range(8):
    print x
    threading.Thread(target=test_thread, args=(a[x], q)).start()
    results.append(q.get())

但我不想同时运行所有线程,而是只想并行运行 2 个线程,然后迭代列表。一旦一个线程完成,就应该处理列表中的下一个值。我找不到示例,也不知道如何为此构建循环。

另外,我不明白队列的行为。我原以为所有平方数都在队列中。但只有一个值? (上面的代码已更改为将所有结果存储在“结果”中)。提示、评论、关键词受到高度赞赏。

EDIT:

第二个问题:

抱歉,我以为 q.get() 会返回所有结果。但它只是像时尚一样给出了队列中的元素。


您可以为此使用线程池:

import threading
from multiprocessing.pool import ThreadPool

def test_thread(elem):
    return elem ** 2

a = [1,2,3,4,5,6,7,8]
pool = ThreadPool(2) # 2 worker threads
results = []
for x in range(8):
    print x
    results.append(pool.apply_async(test_thread, args=(a[x],)))

results = [result.get() for result in results]
# You can also replace this for loop altogether using pool.map
# and get the same result:
# results = pool.map(test_thread, range(8))
print(results)

Output:

0
1
2
3
4
5
6
7
[1, 4, 9, 16, 25, 36, 49, 64]

The ThreadPool类是大部分没有记录的部分multiprocessing模块。也可以通过以下方式访问multiprocessing.dummy.Pool。它允许您创建一个线程池来处理任意数量的工作项,同时始终将同时处理的工作项数量限制为您指定的数量。您可以使用正常的文档multiprocessing.Pool了解其 API。它是完全相同的,除了所有地方都说“进程”,你用“线程”替换它。

我不确定我是否遵循了你问题的第二部分Queue.Queue。在 for 循环的每次迭代中,您都会将一项放入Queue inside test_thread,然后在 for 循环中使用它results.append(q.get())。因此,虽然列表中永远不会有超过一项的项目Queue一次,它被用来传输最终出现在results列表 - 中的每一项都有一个range(8) list.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 线程 - 迭代 n 个任务时始终有 x 个活动线程 的相关文章

  • 如何在 Pandas Python 中按 id 对行进行排名

    我有一个像这样的数据框 id points1 points2 1 44 53 1 76 34 1 63 66 2 23 34 2 44 56 我想要这样的输出 id points1 points2 points1 rank points2
  • Python,Google Places API - 给定一组纬度/经度查找附近的地点

    我有一个由商店 ID 及其纬度 经度组成的数据框 我想迭代该数据框 并使用 google api 为每个商店 ID 查找附近的关键地点 例如输入 Store ID LAT LON 1 1 222 2 222 2 2 334 4 555 3
  • 将整数系列转换为交替(双元)二进制系列

    我不知道如何最好地表达这个问题 因为在这里谷歌搜索和搜索总是让我找到更复杂的东西 我很确定这是基本的东西 但对于我的生活来说 我找不到一个好的方法来做到这一点下列 给定一个整数序列 比如说 for x in range 0 36 我想将这些
  • 动态字段取决于 WTForms 的先前字段

    我正在使用 WTForms 制作表格 目前 我有这个 class UploadForm flask wtf Form fichier wtforms fields FileField u Fichier description wtform
  • 使用 Tkinter 打开网页

    因此 我的应用程序需要能够打开其中的单个网页 并且它必须来自互联网并且未保存 特别是我想使用 Tkinter GUI 工具包 因为它是我最熟悉的工具包 最重要的是 我希望能够在窗口中生成事件 例如单击鼠标 但无需实际使用鼠标 有什么好的方法
  • 如何找到多个 pandas 数据框中一对列与任意顺序对的交集?

    我有多个 pandas 数据框 为了简单起见 假设我有三个 gt gt df1 col1 col2 id1 A B id2 C D id3 B A id4 E F gt gt df2 col1 col2 id1 B A id2 D C id
  • NSUserNotificationCenter.defaultUserNotificationCenter() 使用 PyInstaller 返回 None

    我正在尝试将通知发送到通知中心 Mac OSX 我正在使用 PyObjC 绑定来使用我们的 python 应用程序中的 cocoa api 我正在使用以下代码片段 import Foundation import objc NSUserNo
  • Java 唤醒休眠线程

    我阅读了其他帖子 但没有找到我正在寻找的确切答案 所以我希望有人能给出一些澄清 我有一个将运行一段时间的程序 我有一些在后台运行的线程来执行各种任务 为了简单起见 让我们考虑 3 个线程 ThreadA每 10 秒执行一次任务 其中Thre
  • 列表推导式和 for 循环中的 Lambda 表达式[重复]

    这个问题在这里已经有答案了 我想要一个 lambda 列表 作为一些繁重计算的缓存 并注意到这一点 gt gt gt j for j in lambda i for i in range 10 9 9 9 9 9 9 9 9 9 9 Alt
  • 了解 Python 2.7 中的缩进错误

    在编写 python 代码时 我往往会遇到很多缩进错误 有时 当我删除并重写该行时 错误就会消失 有人可以为菜鸟提供 python 中 IndentationErrors 的高级解释吗 以下是我在玩 CheckIO 时收到的最近 inden
  • R:将 readRDS 应用于 .Rds 文件名的列表对象

    我有几个包含数据帧对象的 Rds 文件 我想对每个文件应用一个函数并将数据帧绑定到单个数据帧中 但是 当我尝试从文件名列表中读取多个 Rds 文件时 我收到错误 FUN X i 中的错误 从连接读取时出错 readRDS 不适用于列表吗 R
  • Flymake的临时文件可以在系统临时目录下创建吗?

    我目前正在使用以下代码在 emacs 中连接 Flymake 和 Pyflakes defun flymake create temp in system tempdir filename prefix make temp file or
  • pandas groupby 操作缺少数据

    在 pandas 数据框中 我有一列如下所示 0 M 1 E 2 L 3 M 1 4 M 2 5 M 3 6 E 1 7 E 2 8 E 3 9 E 4 10 L 1 11 L 2 12 M 1 a 13 M 1 b 14 M 1 c 15
  • 获取多个同名请求参数

    我的问题是给定的代码 from flask import Flask request app Flask name app route def hello return str request values get param None a
  • 数据损坏 C++ 和 Python 之间的管道

    我正在编写一些代码 从 Python 获取二进制数据 将其通过管道传输到 C 对数据进行一些处理 在本例中计算互信息度量 然后将结果通过管道传输回 Python 在测试时 我发现如果我发送的数据是一组尺寸小于 1500 X 1500 的 2
  • 类返回语句不打印任何输出

    我正在学习课程 但遇到了问题return语句 它是语句吗 我希望如此 程序什么也没有打印出来 它只是结束而不做任何事情 class className def createName self name self name name def
  • 从给定的项目列表创建子列表

    我首先要说的是以下问题不是为了家庭作业目的即使因为我几个月前就完成了软件工程师的工作 无论如何 今天我正在工作 一位朋友向我询问了这个奇怪的排序问题 我有一个包含 1000 行的列表 每行代表一个数字 我想创建 10 个子列表 每个子列表都
  • PyQt5按钮lambda变量变成布尔值[重复]

    这个问题在这里已经有答案了 当我运行下面的代码时 它显示如下 为什么 x 不是 x 而是变成布尔值 这种情况仅发生在传递到用 lambda 调用的函数中的第一个参数上 错误的 y home me model some file from P
  • PyObjC + Python 3.0 问题

    默认情况下 Cocoa Python 应用程序使用默认的 Python 运行时版本 2 5 如何配置我的 Xcode 项目以便它使用较新的 Python 3 0 运行时 我尝试用新版本替换项目中包含的Python framework 但它不
  • 从 Django 运行 shell 命令

    我正在 Django 中开发一个网页 使用 apache 服务器 需要调用 shell 命令来启用 禁用一些守护进程 我尝试这样做 os system service httpd restart 1 gt HOME out 2 gt HOM

随机推荐

  • bash: C:/Program: 没有这样的文件或目录

    我是 Docker Debezium Bash 和 Kafka 的新手 我正在尝试在 Windows 10 上运行 MSSQL Server 的 Debezium 教程 示例 https github com debezium debezi
  • UIActivityViewController 在 Whatsapp 和所有共享选项中共享文本

    在我的应用程序中我使用了UIActivityViewController在 Whatsapp Facebook 和 Twitter 等中分享文本 我正在使用 iOS 9 和 Xcode 7 2 版本 当我单击 Whatsapp 图标并单击特
  • htaccess 重写导致 500 错误而不是 404

    我最近将这一点代码添加到我的 htaccess file RewriteCond REQUEST FILENAME f RewriteCond REQUEST FILENAME d RewriteRule 1 php L QSA 好吧 我想
  • 如何使用 PowerShell 更改 cmd 的当前目录?

    我使用读取了一些文件PowerShell 并相应地更改当前目录 但我所能做的就是更改当前目录PowerShell的当前目录 而不是调用者的目录 调用该 ps1 文件的 cmd exe 环境 我尝试过的事情 powershell ch dir
  • 将默认设计主题更改为自定义颜色

    我对 Android Studio 很陌生 作为初学者 我创建了一个简单的应用程序 仅用于测试目的并查看 Android studio 材质主题的外观 我目前正在使用最新版本 即 l 预览 Studio 0 8 2版本 在这里 我刚刚创建了
  • 帮助从 .Net 创建 Zip 文件并从 Java 读取它们

    我正在尝试从 Net 创建一个可以从 Java 代码读取的 Zip 文件 我已经使用 SharpZipLib 创建了 Zip 文件 但如果生成的文件根据 ZipLib 库的 CheckZip 函数有效 并且可以通过 WinZip 或 Win
  • 如何使用字母而不是数字来顺序计数?

    有没有一种简单的方法可以在Python中使用字母进行计数 意思是 A 将用作 1 B 将用作 2 依此类推 Z 之后将是 AA AB 等 所以下面的代码将生成 def get next letter last letter return l
  • Response.Redirect 有时会忽略 URL 编码

    在我当前正在构建的网站中 我们需要大量动态重定向 以维持网站各部分的流量 我目前正在使用response redirect 来实现此目的 重定向URL 是在各种按钮的回发方法后面的代码中动态生成的 这在 95 的情况下都没有问题 但我注意到
  • NSMutableURLRequest 和“请求主体流耗尽”错误

    我对 http PUT 请求和请求正文作为来自文件的流有疑问 无论文件大小有多大 我都会收到错误 NSURLErrorDomain 1021 request body stream exeded 我知道我可以通过实施以下方法来解决这个问题
  • 如何从圆角矩形的顶部中心开始描边

    我想用 SVG 制作一个按钮并复制 YouTube 的自动播放圈 我一直在尝试让笔划在顶部中心开始和结束 但它会在左上角开始最好 因为当我开始更改笔划 dasharry 和笔划 dashoffset 周围的数字时 它开始在开始或结束 我知道
  • ListFragment OnListItemClick 未被调用

    我有一个扩展 ListFragment 的类 它重写了 OnListItemClick 方法 我也在另一个 ListFragment 中以相同的方式执行此操作 并且该方法被调用 我想知道为什么当我单击列表项时该方法没有被调用 这是代码 pa
  • IE 需要 2 个文本框来提交一个按钮?

    我遇到了这个奇怪的问题 我不确定是 ASP NET 还是 IE 7 造成的 这个想法是这样的 当我的表单上只有一个文本框和一个 提交 按钮时 在文本框中按 ENTER 键将仅发布文本框的值 该按钮不会被提交 即使在服务器端也不会触发单击 当
  • Excel VBA 应用程序.OnTime。我认为使用这个……想法是个坏主意?

    我支持的许多用户要求事情自动发生 当然更自动 但这是另一点 一个希望事件每 120 秒发生一次 请参阅我的其他问题 另一个希望在每个工作日下午 5 点发生一件事 这必须在 Excel 工作表上 因此 VBA 作为插件等将是不行的 因为它需要
  • HTML 画布矩形内的阴影效果

    背景 我正在使用浏览器 HTML5 canvas 元素 我有代码 我在网上找到 允许我在画布上绘制一个矩形 Question 我想在鼠标移动事件触发时应用如图所示的 阴影 效果 如何才能实现这一目标 当前方法 我当前的方法是在触发 mous
  • ASP.NET 会话和删除文件夹

    我有一个网络应用程序 管理员可以在其中创建新闻 pdf 文档和他的 cms 面板中的其他内容 问题是 当管理员删除新文件或其他文件时 应用程序会删除与该新文件相关的所有文件 我指的是图像 pdf 和其他文档 主要问题是这些文件存储在 新闻
  • 如何从 JSF 数据表内的 selectOneMenu 获取值?

    我有一个包含一堆行的 JSF 数据表 每行内部都有一个 selectOneMenu 如下所示
  • 跨 PHP、MySQL 等管理日期的最佳方法是什么?

    我的服务器在达拉斯 我在纽约市 PHP 和 MySQL 都有用于设置时区的配置变量 我如何让他们一起工作 我应该在 MySQL 中存储哪些日期 如何让 PHP 根据用户的偏好来处理日期更改 请记住 我认为我从未让 PHP 显式设置过日期 它
  • 从 ASMX Web 服务返回 JSON,无需 XML 包装器?

    我需要从 C Web 服务获取 Json 数据 我知道有几个基于此的问题 相信我 我已经阅读了很多 但只是让我更加困惑 这就是我所做的 在我的网络服务中 我包括 System Web Script Services ScriptServic
  • 是否可以为内嵌文本创建框阴影效果?

    我想创建这样的效果 有没有办法通过 CSS JS 来做到这一点 非常感谢 我是网页设计的新手 在过去的几个小时里我一直在努力解决这个问题 下面是一种仅使用 CSS 即可实现文本多行 填充 突出显示行为的方法 这是基于其他地方找到的 box
  • python 线程 - 迭代 n 个任务时始终有 x 个活动线程

    我基本上想做的是 import threading import Queue def test thread elem q q put elem 2 a 1 2 3 4 5 6 7 8 q Queue Queue results for x