问题标签 [callable]
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.
java - 事件驱动的未来- 线程池
我们使用callable<V>
andFuture<V>
来接收来自线程池的终止线程的结果。我们应该调用get()
以接收返回的结果。我的问题是:它不是事件驱动的。是否有任何框架可以像SIGCHLD
C 中的子进程一样获得结果?我想要这样的东西:(当池中的每个线程完成工作时,线程池将调用此函数)
java - 传递使用参数的android函数
我一直在使用Callable
,但现在我需要该函数在call
方法中使用参数。我知道这不是能力,call
所以我该怎么做?
我目前拥有的(错误):
我的异步任务:
php - Why are my anonymous functions evaluating to NULL in Symfony 2.0?
I just started playing around with Symfony 2.0 and immediately ran into an error:
[28-Nov-2011 16:51:26] PHP Fatal error: Uncaught exception 'InvalidArgumentException' with message 'A callable is expected in AnnotationRegistry::registerLoader().'
Digging deeper, I found that an anonymous function was getting passed into the registerLoader
function.
Looks fine, right? Just to be safe, I threw in a check:
Which returned NULL, which is obviously not callable. I just upgraded to PHP 5.3.2, and according to phpversion()
that's the version that is getting used.
I ran a one-off script outside of the Symfony environment and everything behaved correctly.
//string(6) "object"
Anyone have any thoughts as to why I'm seeing different behavior around anonymous functions inside the Symfony environment?
python - Populate list or tuple from callable or lambda in python
This is a problem I've come across a lot lately. Google doesn't seem to have an answer so I bring it to the good people of stack overflow.
I am looking for a simple way to populate a list with the output of a function. Something like this:
Here are other ways I've found to do this. But I'm not really happy with them, as they seem inefficient.
and
Suggestions?
Thanks for all the answers. I knew there was a more python-esque way.
And to the efficiency questions...
python - Python中可调用的多态性
我有一个名为 iResource 的接口类和许多子类,每个子类都实现“请求”方法。请求函数对其他机器使用套接字 I/O,因此异步运行它们是有意义的,这样其他机器可以并行工作。
问题是当我用 iResource.request 启动一个线程并给它一个子类作为第一个参数时,它会调用超类方法。如果我尝试以“type(a).request”和“a”作为第一个参数开始它,我会得到“”作为 type(a) 的值。任何想法这意味着什么以及如何获得该方法的真实类型?我可以以某种方式在 Python 中正式声明一个抽象方法吗?
编辑:包括代码。
“executeChainResults”采用可调用的列表“任务”和 args 元组的列表“argss”,并假设每个都返回一个列表。然后它在一个单独的线程中执行每个,并连接结果列表。如有必要,我可以发布该代码,但我没有遇到任何问题,因此我暂时将其保留。
对象“a”绝对不是 iResource 类型,因为它有一个只抛出异常的构造函数。但是,用“iResource.request”替换“type(a).request”会调用基类方法。此外,直接调用“self.types["social"][0].request”可以正常工作,但上面的代码给了我:“type object 'instance' has no attribute 'request'”。
取消注释注释行会打印<type 'instance'>
几次。
java - 多线程 REST API 客户端的设计
我正在开发一个程序,它接收一个主题的搜索请求,对纽约时报 API 进行 API 调用以获取与该主题相关的文章,然后到 Twitter API 以获取提及文章的推文,最后处理结果并返回回来了。
我必须使这个多线程。我考虑过使用 ExecutorService 和固定大小的线程池。因此,每个传入的搜索请求都将由单独的线程处理。我也使用 Callable 接口来提交任务。实现 Callable 的类执行 API 处理(发出和接收 API 请求/响应)。最后,结果由 Future 获取并显示为输出。对于每个传入的请求都会发生这种情况。
这有意义吗?还是有更好的方法来做到这一点?
编辑:我在我的本地机器上运行它,从命令行界面接受数据。
java - 在哪里捕获 Callable.call() 抛出的异常
我使用ExecutorService
from Java 来协调线程。为了启动我使用的线程
为了收集结果,我future.get()
为每个线程使用。“线程”是实现Callable
和覆盖的类中的对象列表call()
。
现在我遇到了以下问题。该方法call()
确实会引发各种特定的异常。invokeAll()
并且future.get()
只扔InterruptedException
。
我在哪里可以捕获我抛出的特定异常call()
?还是我必须在那里处理它们?如果抛出其中一个异常,结果是InterruptedException
?
java - Java:带有 Callables 的 ExecutorService:在循环中重用同一个池?需要关机吗?
我有一个循环{Loop-1}
,我开始线程。包含{Loop-1}
实现 Daemon 和 Runnable 的类。在启动{Loop-1}
的线程中,调用我使用 ExecutorServicecoordinate()
的类的方法。Coordinate.java
当Coordinate.java
创建对象时(这种情况发生一次 BEFORE {Loop-1}
),我实例化一个 ExecutorService
pool = Executors.newFixedThreadPool(2);
在coordinate()
我创建一个实现 Callable 的类的两个对象中,然后我启动它们并将结果存储在未来结果列表中。
callableResults = pool.invokeAll(threads);
之后,我尝试在循环中获取结果result = future.get();
然后,我返回{Loop-1}
并重新开始整个过程(调用coordinate()
,,,invokeAll()
future.get()
现在我有以下问题: 1.我得到结果后是否需要关闭 ExecutorService 池coordinate()
?{Loop-1}
2. 每次通话时我都需要重新创建池coordinate()
吗?
感谢您的回答!:-)
java - Java:带有可调用对象的 ExecutorService:超时:future.get() 导致程序直接中断
我在 Java 中使用 ExecutorService,但我注意到一个我不理解的行为。我使用 Callable,当我调用我的线程(实现 Callable 的类)时,我设置了一个超时。然后我等待结果,future.get()
然后我想检查future.isDone()
在执行任务期间是否发生超时。
正如我在文档中阅读的带有超时的 invokeAll :returns a list of Futures representing the tasks, in the same sequential order as produced by the iterator for the given task list. If the operation did not time out, each task will have completed. If it did time out, some of these tasks will not have completed.
所以我想我会在这两种情况下得到一个未来结果的列表,如果发生超时,如果没有发生。
现在发生的情况如下:当发生超时时,代码不会在之后继续,future.get()
而且我从来没有达到可以检查是否发生超时的地步future.isDone()
。我没有发现任何异常,我直接导致了我的代码中的 finally 块,我真的不明白。
这是我的代码片段:
有人可能会解释我,为什么我无法到达future.isDone()
以及我应该改变什么才能识别超时?
谢谢!
java - Java:带有可调用对象的 ExecutorService:invokeAll() 和 future.get() - 结果是否正确?
我使用 Java 中的 ExecutorService 来调用带有invokeAll()
. 之后,我得到了结果集future.get()
。以与创建线程相同的顺序接收结果非常重要。
这是一个片段:
是否可以确保我以与创建新 CallObjects 并将它们添加到我的 ArrayList 的顺序相同的顺序从 future.get() 接收结果?我知道,文档说如下:
invokeAll(): returns a list of Futures representing the tasks, in the same sequential order as produced by the iterator for the given task list. If the operation did not time out, each task will have completed. If it did time out, some of these tasks will not have completed.
但我想确保我理解正确......
感谢您的回答!:-)