问题标签 [concurrent.futures]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
239 浏览

tornado - Tornado RequestHandler 可以在等待 Future 完成的同时处理请求吗?

单个 TornadoRequestHandler类可以处理新请求,同时等待 aFuture完成其中一个实例吗?

我正在调试一个调用 a 的 Tornado 协程,ThreadPoolExecutor我注意到,当协程等待执行程序完成时,RequestHandler被阻塞了。因此,对这个处理程序的任何新请求都在等待协程完成。

这是我为重现我的观察而编写的代码:

现在,如果我访问localhost:8888/1两次,我会得到以下输出:

但我预计会发生以下情况:

请注意,RequestHandler似乎只有 被阻止了,因为我们仍然##每 10 秒获得一次。事实上,如果您添加另一个相同的RequestHandler(Handler2) 并访问localhost:8888/1and localhost:8888/2,这将产生预期的输出。

这是正常的吗?这是预期的行为吗?

对不起,我的英语不好。

0 投票
1 回答
931 浏览

c++ - 将打包的任务推送到容器中会导致 VS2013 中出现 C2280 错误

我想使用 packaged_tasks 将任务添加到容器中。我创建了一个任务,将其绑定到一个数字并尝试将其推送到我的双端队列中。我在 push_back 上收到编译器错误 C2280 (VS2013)。这是代码:

我从一个名为“C++ Threading #9: packaged_task”的 YouTube Bo Qian 讲座中获得了这个示例代码。这是一些错误代码文本:

这是两次更正后的代码(移动任务和非空返回值):

0 投票
1 回答
8127 浏览

python - Python concurrent.futures 使用带有回调的子进程

我正在从 Python 执行 FORTRAN exe。FORTRAN exe 需要几分钟才能完成;因此,我需要在 exe 完成时触发回调。exe 不会将任何内容返回给 Python,但在回调函数中,我将使用 Python 解析来自 FORTRAN 的输出文本文件。

为此,我正在使用concurrent.futuresand add_done_callback(),它可以工作。但是 Web 服务的这一部分,我需要在执行 FORTRAN exe 后调用subprocess.call() / Popen()返回的 Python 方法。然后当 FORTRAN 完成时,回调函数被调用。

提交表单时调用 fortran_execute() 并且我想返回“Fortran 执行”而不等待 FORTRAN 完成。

目前 Python 方法无需等待 FORTRAN 完成即可返回,但它也会在返回时触发回调。FORTRAN 进程继续运行,当它最终完成时,它会尝试调用回调函数并抛出异常,因为future不再存在TypeError: 'NoneType' object is not callable

我在这里缺少什么来启动 exe subprocess,让函数返回,然后只有在 exe 完成执行时才调用回调方法?

0 投票
1 回答
2514 浏览

python - 如何在龙卷风中取消挂起的异步任务,并超时?

我的设置是 python tornado 服务器,它使用ThreadPoolExecutor. 在某些情况下,任务可能会变成无限循环。使用with_timeout装饰器,我设法捕获了超时异常并将错误结果返回给客户端。问题是任务仍在后台运行。如何阻止任务在 中运行ThreadPoolExecutor?或者可以取消Future吗?这是重现问题的代码。使用 tornado 4 和 concurrent.futures 库运行代码并转到http://localhost:8888/test

0 投票
3 回答
36296 浏览

python - 一旦 Futures 开始,你如何杀死它们?

我正在使用新concurrent.futures模块(它也有一个 Python 2 反向端口)来执行一些简单的多线程 I/O。我无法理解如何干净地杀死使用此模块开始的任务。

查看以下 Python 2/3 脚本,它重现了我看到的行为:

在此脚本运行时,使用常规的 Control-C 键盘中断似乎无法彻底终止。我在 OS X 上运行。

  • 在 Python 2.7 上,我必须求助于kill命令行来终止脚本。Control-C 只是被忽略。
  • 在 Python 3.4 上,如果你按两次 Control-C 就可以工作,但随后会转储很多奇怪的堆栈跟踪。

我在网上找到的大多数文档都讨论了如何使用旧threading模块彻底杀死线程。它似乎都不适用于这里。

并且concurrent.futures模块中提供的所有停止东西的方法(如Executor.shutdown()and Future.cancel())仅在 Futures 尚未启动或完成时才起作用,在这种情况下这是没有意义的。我想立即打断未来。

我的用例很简单:当用户按下 Control-C 时,脚本应该像任何表现良好的脚本一样立即退出。这就是我想要的。

那么在使用时获得这种行为的正确方法是什么concurrent.futures

0 投票
1 回答
187 浏览

python - Tornado Future 对象转储到 Redis 并从 Redis 加载

我正在用 Tornado 开发一个推送系统。由于我正在进行长时间的轮询,我需要保留一个未来对象列表,以便稍后为它们设置结果。然后我想将 Future 列表保留在 Redis 中,所以我用 Pickle 模块“转储”每个 Future 并将其设置为 Redis,但是在我从 Redis 获取它之后,并“加载”它。我发现它不是原始的未来对象,当我在这个未来对象上调用 set_result 函数时,它并没有像我预期的那样工作。

任何人都可以帮助我吗?

这是我的代码的一部分:

0 投票
1 回答
314 浏览

python - Python Concurrent.Futures Map 未同时执行

我有以下示例:

我希望这个函数会按照每次睡眠的顺序打印“我睡了 {} 秒”,但是,在处理完最后一个值 (10) 之后会打印所有结果。

为什么会发生这种情况以及每次通话完成时我将如何打印 sleeper

0 投票
0 回答
137 浏览

java - 如何实现 Java 未来类以实现并行性以调用多个并发连接的 shell 脚本

我正在使用Java未来类来实现并行编程。我正在调用 shell 脚本,如下所示。我正在从我的 java 控制器调用以下函数

在未来类的控制器实现中

调用脚本的代码是:

我正在调用多个脚本,我希望它们并行执行,但是在执行时我遇到了错误

如果我们使用未来的课程,他们是否有获得 ssh 会话的最大限制,即(并发会话,因为我将执行 5 个这样的具有不同目的的脚本,我希望它们都并行运行。)

0 投票
1 回答
189 浏览

python - 将自定义数据传递给 request_futures 中的异常

我正在运行以下代码来发出异步“获取”请求。该类CustomSession用于添加对每个请求计时的支持。

如果发生异常或请求运行正常,我希望能够访问test_id附加到futures列表的内容以及要请求的 URL。换句话说,当请求运行或抛出异常时,我想找到test_id与调用相关联的session.get.

0 投票
2 回答
862 浏览

python - FutureSession:套接字连接未关闭

我正在开发一个 PyQt 程序,它基本上从互联网上收集数据。在此示例中,我尝试从 RSS 网页获取数据。

假设 self.feed 是 RSS 页面,包含所有文章,假设“条目”是一篇文章。“entry.url”是网站上一篇文章的原始页面。

这基本上就是我的做法。它嵌入在 PyQt 线程中,我同时运行多个线程,但我认为问题不在于 PyQt。

我的问题是我认为期货不会关闭连接,即使它们完成了。我这样检查:

losf -i 给出连接中涉及的打开文件。该命令的其余部分是计算打开的文件数。这个数字不会停止增长(类似于 900),然后我收到以下错误:

我认为问题来自期货,但实际上我不确定。

我试过类似的东西:

在线程的末尾,但它没有工作。

你有什么主意吗 ?