标签: callable

使用arg列表调用python callable

简单的问题:如何将任意args列表传递给python可调用?

假设我想从命令行调用一个函数,如下所示:

my_script.py foo hello world
Run Code Online (Sandbox Code Playgroud)

使用以下脚本:

import myfuncs
f = getattr(myfuncs, sys.args[1])
if f and callable(f):
    # This is the bit I don't know. I effectively want f(sys.args[2:])
Run Code Online (Sandbox Code Playgroud)

我确信有办法做到这一点,但我必须忽略它.

python callable

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

"列表对象不可调用"

我目前正在为Maya编写一个基于Python的工具.我正在使用一系列代码,我已经在其他工具的其他部分中使用了这些代码,并且出于某种原因它拒绝在这一轮工作.我看不出有什么理由不是.

def generateClothSkeleton(cloth):
print "Generating Cloth Skeleton"
objects = cmds.textScrollList("clothList", ai=True, q=True)
for x in range(0, len(objects)):
    numVerts = cmds.polyEvaluate((objects[x]), v=True)
    vertPosList = []
    for y in xrange(1, numVerts):
        object = objects[x]
        xformString = object + ".vtx[" + str(y) + "]"
        vertPos = cmds.xform(xformString, t=True, ws=True, a=True, q=True)
        vertPosList.extend([vertPos])
...
Run Code Online (Sandbox Code Playgroud)

运行时,Python会在object = objects [x]行上返回错误:'list'对象不可调用.这很奇怪,考虑到没有打电话......

是什么导致了这个令人愤怒的问题?

编辑:值得注意的是,如果我运行打印对象[x],它会按预期返回对象的名称...

python list callable maya

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

我如何得到Vector <type> Arraylist <type>作为call()的返回?

如何使以下Java代码工作:

public class Worker implements Callable<myObject>{

   @Override
   public ArrayList<myObject> call() throws Exception {
      ArrayList<myObject> lst_MyObjects= new ArrayList<myObject>();     
      return lst_MyObjects;
   }
}
Run Code Online (Sandbox Code Playgroud)

错误:返回类型与Callable.call()不兼容

我只想返回一个特定类型的容器(Vector<>/ ArrayList<>等)

java android asynchronous callable

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

解释一个lambdas列表

我有一个包含一些lambda元素的列表:

l=['A',lambda x:x*2,lambda x:x*3]
Run Code Online (Sandbox Code Playgroud)

在执行lambda之后如何将此列表附加到另一个(如下所示 - 显然这个不起作用):

m=list(k=k(3) if isinstance(k,types.FunctionType) else k for k in l)
Run Code Online (Sandbox Code Playgroud)

预期的是:

m=['A',6,9]
Run Code Online (Sandbox Code Playgroud)

这可能吗?

python lambda callable

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

当给定时间内没有提交任务时关闭 ExecutorService

我正在使用ExecutorService来调用一个服务,该服务基本上连接到一个应用程序(本地或通过 SSH 远程),并允许向其发送命令并获取其输出。

因此,Thread由 所创建的ExecutorService正在等待用户输入,然后通过 call 方法的实现将该输入作为任务处理,该方法返回输出,如下所示:

@Override
public String call() throws Exception {
    write(command);
    return readResult();
}
Run Code Online (Sandbox Code Playgroud)

当给定时间内没有调用任何任务时,我想停止Thread(关闭ExecutorService),但我找不到如何执行此操作...Future.get或者ExecutorService.invoke[All|Any]可以处理超时,但仅涉及它调用的任务。

关于我如何能够做到这一点有什么想法吗?

java callable executorservice

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

Java - 通过参数传递方法

我正在尝试创建一种方法,允许我使用我认为称为lambdas的方法,在一系列连接上执行方法.

这是我在经过一些研究后得出的代码,但它不起作用:

performGlobalAction(()->{
    // doSomething();
});
Run Code Online (Sandbox Code Playgroud)

你还需要看到我假设的方法:

private <T> void performGlobalAction(Callable<T> action) {
    for(int i = 0; i < connectionList.size(); i++) {
        connectionList.get(i).performAction(action);
    }
}
Run Code Online (Sandbox Code Playgroud)

这提供了以下错误:

The method performAction(Callable<T>) in the type Connection is not
applicable for the arguments (() -> {})
Run Code Online (Sandbox Code Playgroud)

这种方法的目标是允许自己构建一个"在旅途中"的方法,而不会为它创建一个空白.

这可能吗?好像我之前已经使用了大量的语句.看起来这实际上就是lambdas语句的工作原理.

java lambda callable

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

如何将函数作为参数传递给Java中的Callable

我有一个函数,使一些服务调用数据库,我不想改变.但是如果有多个请求需要运行此函数,我想在线程池中运行它们.所以,我试图找出如何在Callable类中包装此函数.这是函数的签名:

void invokeCommand(string table, int ctype)

函数invokeCommand不返回任何值,但可以抛出异常.我想使用以下构造不是一个选项,因为我无法将参数和invokeCommand函数传递给它.

Callable<Void> myCommand = new Callable<Void>() {
    public Void call() {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我了解到另一种方法是定义一个命名类而不是匿名类,并通过构造函数传递参数(string,int).有没有办法我也可以传递函数invokeCommand?推荐的方法是什么?提前致谢.

java callable

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

IllegalStateException:必须在 servlet 和所有过滤器上启用异步支持

我尝试在控制器中使用返回类型 Callable 以便在处理请求时释放 servlet 线程,但是当在开发环境中部署 Spring Boot 应用程序时出现以下错误:

org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是 java.lang.IllegalStateException:必须在 servlet 上以及异步请求处理中涉及的所有过滤器上启用异步支持。这是使用 Servlet API 在 Java 代码中或通过将“true”添加到 web.xml 中的 servlet 和过滤器声明来完成的。

注意:我已经阅读了几篇有关此错误的文章,但没有一个解决了我的问题。

我遇到的特殊行为是,本地一切都按预期工作:servlet 线程被释放,请求在带外处理,最终返回给客户端所需的响应。

但是,当应用程序部署在前面提到的开发环境中时,事情就无法按预期工作。

在本地测试时,我检查了 servlet/filters 是否支持异步;在调试时,我只需在给定的过滤器中放置一个断点ApplicationFilterChain,然后检查整个链。在那里,我可以检查 servlet 属性(其中我看到 asyncSupported 设置为 true)以及链中包含的每个过滤器(我一一检查了它们;所有它们的 asyncSupported 设置为 true)。

我还有一个自定义JwtAuthenticationFilter,它是AbstractAuthenticationProcessingFilter身份验证阶段的一部分,因此我还在此类过滤器中放置了一个断点并检查链。在那里我看到了originalChain(ApplicationFilterChain之前评论过的)和“additionalFilters”集合,其中出现了我的JwtAuthenticationFilter以及spring安全过滤器。但它们都没有 asyncSupported 属性,所以我假设它们不是开发服务器抛出的错误的一部分。请注意,正如我在本地提到的,一切正常;该错误仅在部署到开发服务器时出现。

控制器方法:

  @GetMapping(path = "/export")
  public Callable<ResponseEntity> exportData() throws IOException {
    return new CustomContextAwareCallable(() -> handleResponse());
  }
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:即使 ApplicationFilterChain 上的每个过滤器以及 servlet 都将 asyncSupported 设置为 true,为什么我在部署后会从服务器收到上面显示的错误?

该应用程序没有作为 .WAR 部署在服务器上,它只是使用嵌入式 tomcat(与我在本地执行的操作相同)。

更新:另一个区别是,在开发环境中客户端请求通过 nginx 代理传递(只是想知道是否由于某种原因请求属性 …

spring spring-mvc callable servlet-filters

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

Python:将额外的参数传递给 callable

我有以下python代码:

import networkx as nx 

def cost(i, j, d, value1, value2):
    # some operation involving all these values
    return cost


# graph is a networkx graph
# src, dst are integers
# cost is a callable that is passed 3 values automatically i.e. src, dst and d 
# d is a dictionary of edge weights
path = nx.dijkstra_path(graph, src, dst, weight=cost)
Run Code Online (Sandbox Code Playgroud)

现在我想通过两个值value1,并value2cost功能。

networkx文件表示,weight可以接受恰好3参数的调用。但我需要value1value2进行计算。如何才能做到这一点?

编辑 使用 functools …

python function callable

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

通用可调用

我试图实现一个通用的callable来委派不同类型的帐户的修改.代码如下所示:

import java.util.concurrent.Callable;
class Task<T extends BaseAccount> extends Callable<T extends BaseAccount> {

  private final T t;

  public Task(T t) {
    this.t = t;
  }

  @Override
  public T call() throws Exception {
    t.increment();
    return t;
  }

}
Run Code Online (Sandbox Code Playgroud)

BaseAccount只是一个抽象类,如下所示:

abstract class BaseAccount {
  abstract public void increment();
}
Run Code Online (Sandbox Code Playgroud)

但显然我没有到达那里,因为我看到很多与泛型有关的编译错误.希望通过这一点获得帮助.

java generics callable

0
推荐指数
1
解决办法
4763
查看次数