问题列表 - 第27309页

在python中产生一个线程

我有一系列'任务',我想在不同的线程中运行.任务将由单独的模块执行.每个都包含用于处理其任务的业务逻辑.

给定一个任务元组,我希望能够为每个模块生成一个新线程,如下所示.

from foobar import alice, bob charles
data = getWorkData()
# these are enums (which I just found Python doesn't support natively) :(
tasks = (alice, bob, charles)

for task in tasks
  # Ok, just found out Python doesn't have a switch - @#$%!
  # yet another thing I'll need help with then ...
  switch
    case alice:
      #spawn thread here - how ?
      alice.spawnWorker(data)
Run Code Online (Sandbox Code Playgroud)

没有猜测的奖品我还在用C++思考.如何使用Pythonic'enums'和'switch'以Pythonic方式编写它,并能够在新线程中运行模块.

显然,这些模块都有一个派生自一个名为Plugin的ABC(抽象基类)的类.spawnWorker()方法将在Plugin接口上声明,并在各种模块中实现的类中定义.

也许,有一种更好的(即Pythonic)做这一切的方式?我有兴趣知道

[编辑]

我刚刚读了一个机器人,似乎Python没有真正意义上的线程实现(至少,不是C++程序员会想到的意义).在任何情况下,这对我来说都不是一个限制.每个任务都相当耗时,我不想阻止启动一个任务直到另一个任务完成,这就是我使用线程的原因.时间切片并不会让我感到烦恼 - 只要它们几乎同时启动(或者不久之后),Python就可以在它们之间尽可能多地进行时间间隔 - 这对我很好.

我在SO上看到了类似问题的答案.

用户提供了一个简单的线程类,如下所示:

import threading
class Foo …
Run Code Online (Sandbox Code Playgroud)

python

22
推荐指数
2
解决办法
4万
查看次数

谷歌地图的通行费?

我正在编写一个应用程序来计算两点之间的距离和成本.其中一个要求是我需要计算旅程的成本(汽油和公路收费).气很容易.但是,我想不出一个收费的好办法.谷歌告诉我,如果GStep有收费,但它没有说明多少.似乎没有中央权威机构公布收费标准(这是针对西欧的).任何人都有处理这个问题的经验,你是如何解决的?

- 帕维尔

routing google-maps

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

JUnit - assertSame

当有人使用值> 127时,有人能告诉我为什么assertSame()会失败吗?

        import static org.junit.Assert.*;

        ...

        @Test
        public void StationTest1() {
          ..

          assertSame(4, 4);         // OK
          assertSame(10, 10);       // OK
          assertSame(100, 100);     // OK
          assertSame(127, 127);     // OK
          assertSame(128, 128);           // raises an junit.framework.AssertionFailedError!
          assertSame(((int) 128),((int) 128)); // also junit.framework.AssertionFailedError!
        }
Run Code Online (Sandbox Code Playgroud)

我正在使用JUnit 4.8.1.

java junit unit-testing junit4

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

使用Arrays.copyOf复制不同类型的数组时出现问题

我正在尝试创建一个几乎将任何东西作为参数的方法,并返回值的连接字符串表示形式和一些分隔符.

public static String getConcatenated(char delim, Object ...names) {
String[] stringArray = Arrays.copyOf(names, names.length, String[].class); //Exception here
return getConcatenated(delim, stringArray);
}
Run Code Online (Sandbox Code Playgroud)

而实际的方法

public static String getConcatenated(char delim, String ... names) {
if(names == null || names.length == 0)
    return "";

StringBuilder sb = new StringBuilder();

for(int i = 0; i < names.length; i++) {
    String n = names[i];
    if(n != null) {
        sb.append(n.trim());
        sb.append(delim);
    }
}

//Remove the last delim
return sb.substring(0, sb.length()-1).toString();
}
Run Code Online (Sandbox Code Playgroud)

我有以下JUnit测试:

final String two = RedpillLinproUtils.getConcatenated(' …
Run Code Online (Sandbox Code Playgroud)

java arrays

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

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

如何在TextBox中只允许输入0或1?

如何将TextBox控件限制为仅允许值0和1?

谢谢.我还有一个问题:如何在文本框控件中禁用剪贴板中的put文本?

c# textbox

7
推荐指数
2
解决办法
2369
查看次数

如何真正删除git分支(即删除所有对象/提交)?

我有一个像git树

                 A---B---C topic
                /
           D---E---F---G master     <--
Run Code Online (Sandbox Code Playgroud)

我想删除主题及其上的所有对象.

我记下了主题的SHA ID,然后输入:

git branch -D topic
git gc                                   #  <-- I also tried prune here...
git checkout -b temp <SHA1 ID of topic>
Run Code Online (Sandbox Code Playgroud)

在最后一个命令之后,我希望得到一个错误(类似于"不存在的对象ID ......"或类似的那样).但是没有错误,gitk显示与上面相同的树结构?

我错过了什么 - 我认为gc/prune应该删除所有无法访问的对象?

git branch git-gc

23
推荐指数
2
解决办法
4126
查看次数

如何在不产生转换成本的情况下检索可能为NULL的JDBC NUMERIC列值?

我有一个使用JDBC数据库的简单查询,这个查询很慢,即使查询本身似乎不是问题.剖析器显示花费了大量时间:

ResultSet#getString(String)
Run Code Online (Sandbox Code Playgroud)

方法,其中一些方法是检索NUMBER具有Java long精度或其附近的Oracle 列.这些值也可以为null.

我猜测getString(String)返回一个定义为数字的列值时很慢 - 并且考虑使用getLong(String)但当然返回一个不能为null的原语.

有没有更好的办法?JDBC NUMERIC值是否可以作为对象返回,而不将其转换为String或产生任何其他转换成本?

java performance jdbc

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

整个系统的单元测试应该多久运行一次?

一般来说,我仍然是一个测试新手的单位.

顺便说一句,你还可以看到其他论坛,如xUnit.net,等等这个问题,
因为它是我的一个重要问题.我提前为我的
交叉发布道歉; 你的意见对我来说非常重要,并不是
这个论坛的每个人都属于其他论坛.

我一直在寻找一个大的十年历史的遗留系统已超过700个单元测试有
最近写(700只是一个小小的开始).测试恰好用
MSTest 编写,但这个问题适用于所有测试框架AFAIK.

当我跑步时,通过vs2008"ALL TESTS",最后的计数只有七次测试.
这大约是迄今为止所写测试总数的1%.

更多信息:CodeMlex上提供了ASP.NET MVC 2 RTM源代码,包括其单元测试
; 这些单元测试也是用MSTest编写的,
尽管(一个不相关的事实)Brad Wilson后来加入了ASP.NET MVC团队
作为其高级程序员.所有2000多个测试都会运行,而不仅仅是少数.

问题:鉴于AFAIK单元测试的目的是识别
SUT中的破损,我是否认为"最佳实践"总是,
或者至少非常频繁地运行所有测试?

更新时间2010-05-22

首先,感谢所有提供优秀答案的人.您的答案证实了我的一般结论,即无论是否正在练习TDD(之前的测试)或经典的单元测试(测试之后),在每次本地重建之后运行所有单元测试都是最佳实践.

imho,这个问题有不止一个最好的答案,但是AFAIK SO让我只选择一个,所以为了公平起见,我给了Pete Johns一个复选标记,因为他是第一个并获得了最多的选票. SO社区.芬兰的Esko Luontola也给出了一个很好的答案(我希望他不会被埋在火山灰中)和两个非常好的联系,值得你花时间imho; 肯定与FIRST的链接对我来说是鼓舞人心的; AFAIK,.NET世界中只有xUnit.net提供"任何订单,随时".Esko的第二个链接是一个真正出色的92分钟视频"集成测试是一个骗局"由JB(Joe)Rainsberger(http://jbrains.ca提供,其中有更多内容值得我花时间).顺便说一句,Esko的博客也值得访问http:// orfjackal.

tdd nunit unit-testing mstest xunit.net

9
推荐指数
2
解决办法
1065
查看次数

T-SQL存储过程的回归测试

我想回归测试t-sql存储过程.我的想法是为每个SP指定多个输入参数集.应使用这些参数执行SP,结果应写入光盘.下次将新结果与之前存储的结果进行比较.

有没有人知道这样的好工具?应该不难实现,但在实践中,您将需要"忽略该列"等功能.我会假设这样的工具应该已经存在!?

欢呼,阿奇姆

t-sql testing

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