标签: callable

从Callable.call()抛出异常的位置

可能重复:
处理Java ExecutorService任务中的异常

我使用ExecutorServicefrom Java来协调Threads.用于启动我使用的线程

pool = new ExecutorService(2);
callableResults = pool.invokeAll(threads);
Run Code Online (Sandbox Code Playgroud)

为了收集结果,我使用future.get()每个线程."threads"是实现Callable和覆盖的类中的对象列表call().

现在我遇到了以下问题.该方法call()确实抛出了各种特定的异常.invokeAll()并且future.get()只投掷InterruptedException.

我在哪里可以捕获我投入的具体例外情况call()?或者我必须在那里处理它们?如果抛出其中一个异常,那么结果是InterruptedException

java multithreading exception callable executorservice

20
推荐指数
1
解决办法
3万
查看次数

函数对象和可调用对象之间有什么区别?

我最近看到了有关ECMAScript 5变化演示文稿.这句话有一张幻灯片:

功能可调用

typeof f === 'function'                       // ? f is Callable
({}).toString.call(f) === '[object Function]' // ? f is a Function
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释一下FunctionCallable之间的区别是什么?

javascript function callable

19
推荐指数
1
解决办法
5839
查看次数

如何将参数传递给Scikit-Learn Keras模型函数

我有以下代码,使用Keras Scikit-Learn Wrapper,它工作正常:

from keras.models import Sequential
from keras.layers import Dense
from sklearn import datasets
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import StratifiedKFold
from sklearn.model_selection import cross_val_score
import numpy as np


def create_model():
    # create model
    model = Sequential()
    model.add(Dense(12, input_dim=4, init='uniform', activation='relu'))
    model.add(Dense(6, init='uniform', activation='relu'))
    model.add(Dense(1, init='uniform', activation='sigmoid'))
    # Compile model
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
    return model


def main():
    """
    Description of main
    """


    iris = datasets.load_iris()
    X, y = iris.data, iris.target

    NOF_ROW, NOF_COL =  X.shape

    # evaluate …
Run Code Online (Sandbox Code Playgroud)

python function callable scikit-learn keras

18
推荐指数
2
解决办法
5286
查看次数

什么是C++中的可调用对象?

我正在研究提升线程.我发现线程类有一个接受可调用对象的构造函数.什么是可调用对象?

class CallableClass
{
private:
    // Number of iterations
    int m_iterations;

public:

    // Default constructor
    CallableClass()
    {
        m_iterations=10;
    }

    // Constructor with number of iterations
    CallableClass(int iterations)
    {
        m_iterations=iterations;
    }

    // Copy constructor
    CallableClass(const CallableClass& source)
    {
        m_iterations=source.m_iterations;
    }

    // Destructor
    ~CallableClass()
    {
    }

    // Assignment operator
    CallableClass& operator = (const CallableClass& source)
    {
        m_iterations=source.m_iterations;
        return *this;
    }

    // Static function called by thread
    static void StaticFunction()
    {
        for (int i=0; i < 10; i++)  // Hard-coded upper limit
        { …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading object callable

17
推荐指数
4
解决办法
1万
查看次数

了解Java FixedThreadPool

我试图了解Java FixedThreadPool在实践中如何工作,但文档没有回答我的问题.

假设一个简单的场景,如:

ExecutorService ES= Executors.newFixedThreadPool(3);
List<Future> FL;
for(int i=1;i<=200;i++){
   FL.add(ES.submit(new Task()));
}
ES.shutdown();
Run Code Online (Sandbox Code Playgroud)

这里TaskCallable它构建一些资源,使用它们,然后返回一些输出.

我的问题:Task完成for循环后有多少内存?换句话说:Task一次只有3 个构建资源,或者所有资源都是预先创建的,这样,在.submit我有200个Task(及其资源)等待执行之后?

注意:资源构造发生在构造函数中Task,而不是在call()方法中.

在javadoc中(随意跳过以下内容):让我感到困惑的是Java文档中的以下解释

创建一个线程池,该线程池重用在共享的无界队列中运行的固定数量的线程.在任何时候,最多nThreads线程将是活动的处理任务.

我想这意味着,在我的示例中,所有200个任务都在队列中,但其中只有3个随时执行.

任何帮助都非常感谢.

java multithreading callable executorservice

17
推荐指数
3
解决办法
2994
查看次数

Java:参数化的Runnable

标准Runnable接口只有非参数化run()方法.还有通用类型返回结果的方法Callable<V>接口call().我需要传递泛型参数,如下所示:

interface MyRunnable<E> {
  public abstract void run(E reference);
}
Run Code Online (Sandbox Code Playgroud) 是否有任何标准接口用于此目的,或者我必须自己声明基本接口?

java generics callable

16
推荐指数
3
解决办法
2万
查看次数

使一个类在同一个实例中可调用

class Foo(object):
    def tick(self):
        print("something")

class Bar(object):
    def __init__(self):
        self.foo = Foo()

    def tick(self):
        #Here's what I do....
        self.foo.tick()

        #here's what my goal would be
        self.foo()

b = Bar()
b.tick()
Run Code Online (Sandbox Code Playgroud)

这基本上是我的目标.从我收集到的内容中我可以将tick功能更改为__call__,这样我就可以按照自己的意愿行事.其他几个答案说这会产生一个对象的新实例,这是否意味着它会使用self.foo的内存?或者它会成为一个全新的对象,新实例?或制作self.foo的副本?

此外还有一些缺点,可能会或可能不会表现出来.对于我的程序的特定部分,我检查对象是否有一个__call__来确定我传递的参数是函数还是变量,我真的不认为我想要允许它被调用(尽管如此,我认为该类在技术上将是一个函数.)有没有办法区分函数和可调用类?

还有什么能使这种做法变得不受欢迎(这是一种pythonic的工作方式吗?)?我的下一个想法是,鉴于其他变量前缀为__cant,在类之外使用,但这似乎不是这里的情况.

python class callable

16
推荐指数
2
解决办法
1万
查看次数

如何声明Callable执行函数在Java中返回void?

假设我想foo异步运行静态方法

void foo() throws Exception {...} 
Run Code Online (Sandbox Code Playgroud)

由于foo抛出一个异常,我宁愿创建Callable并调用ExecutorService.submit它来获得Future.

现在我不知道如何申报的CallableFuture正确的.我应该申报吗?

Callable<Void> and Future<Void>?
Run Code Online (Sandbox Code Playgroud)

java concurrency future callable

16
推荐指数
1
解决办法
1万
查看次数

如何编写/引用PHP可调用函数易于管理我的IDE

当我必须编写对可调用函数的引用时,我使用PHP的标准语法定义为:

PHP函数的名称作为字符串传递.可以使用任何内置或用户定义的函数[...省略...].

实例化对象的方法作为包含索引0处的对象和 索引1处的方法名称 (aka字符串)的数组传递.

通过传递类名 (仍然是字符串) 而不是索引0处的对象,也可以传递静态类方法而无需实例化该类的对象.

从PHP 5.2.3开始,也可以传递 (字符串) 'ClassName :: methodName'.

除了常见的用户定义函数,匿名函数也可以传递给回调参数.

对于诸如函数名重构查找用法之类的操作,所有这些方式都不是"IDE友好的" .

在我的回答中,我提出了一个解决方案,但是还有其他方法可以应用,甚至是完全不同的,允许IDE"找到"方法的调用?

php ide closures callable anonymous-function

16
推荐指数
1
解决办法
408
查看次数

从调用方法并行执行方法

我有一个正在使用的客户库和传入DataRequest对象拥有userid,timeout并且在它的一些其他领域.现在我使用这个DataRequest对象创建一个URL,然后我使用了一个HTTP调用RestTemplate,我的服务返回一个JSON响应,我用它来创建一个DataResponse对象并将这个DataResponse对象返回给它们.

以下是DataClient客户通过将DataRequest对象传递给我的类.DataRequest如果在getSyncData方法中花费太多时间,我正在使用客户传递的超时值来超时请求.

public class DataClient implements Client {

    private RestTemplate restTemplate = new RestTemplate();
    // first executor
    private ExecutorService service = Executors.newFixedThreadPool(15);

    @Override
    public DataResponse getSyncData(DataRequest key) {
        DataResponse response = null;
        Future<DataResponse> responseFuture = null;

        try {
            responseFuture = getAsyncData(key);
            response = responseFuture.get(key.getTimeout(), key.getTimeoutUnit());
        } catch (TimeoutException ex) {
            response = new DataResponse(DataErrorEnum.CLIENT_TIMEOUT, DataStatusEnum.ERROR);
            responseFuture.cancel(true);
            // logging …
Run Code Online (Sandbox Code Playgroud)

java multithreading callable thread-safety executorservice

16
推荐指数
1
解决办法
1923
查看次数