问题标签 [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.
tornado - Tornado RequestHandler 可以在等待 Future 完成的同时处理请求吗?
单个 TornadoRequestHandler
类可以处理新请求,同时等待 aFuture
完成其中一个实例吗?
我正在调试一个调用 a 的 Tornado 协程,ThreadPoolExecutor
我注意到,当协程等待执行程序完成时,RequestHandler
被阻塞了。因此,对这个处理程序的任何新请求都在等待协程完成。
这是我为重现我的观察而编写的代码:
现在,如果我访问localhost:8888/1
两次,我会得到以下输出:
但我预计会发生以下情况:
请注意,RequestHandler
似乎只有 被阻止了,因为我们仍然##
每 10 秒获得一次。事实上,如果您添加另一个相同的RequestHandler
(Handler2) 并访问localhost:8888/1
and localhost:8888/2
,这将产生预期的输出。
这是正常的吗?这是预期的行为吗?
对不起,我的英语不好。
c++ - 将打包的任务推送到容器中会导致 VS2013 中出现 C2280 错误
我想使用 packaged_tasks 将任务添加到容器中。我创建了一个任务,将其绑定到一个数字并尝试将其推送到我的双端队列中。我在 push_back 上收到编译器错误 C2280 (VS2013)。这是代码:
我从一个名为“C++ Threading #9: packaged_task”的 YouTube Bo Qian 讲座中获得了这个示例代码。这是一些错误代码文本:
这是两次更正后的代码(移动任务和非空返回值):
python - Python concurrent.futures 使用带有回调的子进程
我正在从 Python 执行 FORTRAN exe。FORTRAN exe 需要几分钟才能完成;因此,我需要在 exe 完成时触发回调。exe 不会将任何内容返回给 Python,但在回调函数中,我将使用 Python 解析来自 FORTRAN 的输出文本文件。
为此,我正在使用concurrent.futures
and 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 完成执行时才调用回调方法?
python - 如何在龙卷风中取消挂起的异步任务,并超时?
我的设置是 python tornado 服务器,它使用ThreadPoolExecutor
. 在某些情况下,任务可能会变成无限循环。使用with_timeout
装饰器,我设法捕获了超时异常并将错误结果返回给客户端。问题是任务仍在后台运行。如何阻止任务在 中运行ThreadPoolExecutor
?或者可以取消Future
吗?这是重现问题的代码。使用 tornado 4 和 concurrent.futures 库运行代码并转到http://localhost:8888/test
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
?
python - Tornado Future 对象转储到 Redis 并从 Redis 加载
我正在用 Tornado 开发一个推送系统。由于我正在进行长时间的轮询,我需要保留一个未来对象列表,以便稍后为它们设置结果。然后我想将 Future 列表保留在 Redis 中,所以我用 Pickle 模块“转储”每个 Future 并将其设置为 Redis,但是在我从 Redis 获取它之后,并“加载”它。我发现它不是原始的未来对象,当我在这个未来对象上调用 set_result 函数时,它并没有像我预期的那样工作。
任何人都可以帮助我吗?
这是我的代码的一部分:
python - Python Concurrent.Futures Map 未同时执行
我有以下示例:
我希望这个函数会按照每次睡眠的顺序打印“我睡了 {} 秒”,但是,在处理完最后一个值 (10) 之后会打印所有结果。
为什么会发生这种情况以及每次通话完成时我将如何打印 sleeper
java - 如何实现 Java 未来类以实现并行性以调用多个并发连接的 shell 脚本
我正在使用Java未来类来实现并行编程。我正在调用 shell 脚本,如下所示。我正在从我的 java 控制器调用以下函数
在未来类的控制器实现中
调用脚本的代码是:
我正在调用多个脚本,我希望它们并行执行,但是在执行时我遇到了错误
如果我们使用未来的课程,他们是否有获得 ssh 会话的最大限制,即(并发会话,因为我将执行 5 个这样的具有不同目的的脚本,我希望它们都并行运行。)
python - 将自定义数据传递给 request_futures 中的异常
我正在运行以下代码来发出异步“获取”请求。该类CustomSession
用于添加对每个请求计时的支持。
如果发生异常或请求运行正常,我希望能够访问test_id
附加到futures
列表的内容以及要请求的 URL。换句话说,当请求运行或抛出异常时,我想找到test_id
与调用相关联的session.get
.
python - FutureSession:套接字连接未关闭
我正在开发一个 PyQt 程序,它基本上从互联网上收集数据。在此示例中,我尝试从 RSS 网页获取数据。
假设 self.feed 是 RSS 页面,包含所有文章,假设“条目”是一篇文章。“entry.url”是网站上一篇文章的原始页面。
这基本上就是我的做法。它嵌入在 PyQt 线程中,我同时运行多个线程,但我认为问题不在于 PyQt。
我的问题是我认为期货不会关闭连接,即使它们完成了。我这样检查:
losf -i 给出连接中涉及的打开文件。该命令的其余部分是计算打开的文件数。这个数字不会停止增长(类似于 900),然后我收到以下错误:
我认为问题来自期货,但实际上我不确定。
我试过类似的东西:
在线程的末尾,但它没有工作。
你有什么主意吗 ?