我有一系列'任务',我想在不同的线程中运行.任务将由单独的模块执行.每个都包含用于处理其任务的业务逻辑.
给定一个任务元组,我希望能够为每个模块生成一个新线程,如下所示.
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) 我正在编写一个应用程序来计算两点之间的距离和成本.其中一个要求是我需要计算旅程的成本(汽油和公路收费).气很容易.但是,我想不出一个收费的好办法.谷歌告诉我,如果GStep有收费,但它没有说明多少.似乎没有中央权威机构公布收费标准(这是针对西欧的).任何人都有处理这个问题的经验,你是如何解决的?
- 帕维尔
当有人使用值> 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.
我正在尝试创建一个几乎将任何东西作为参数的方法,并返回值的连接字符串表示形式和一些分隔符.
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) 如何将TextBox控件限制为仅允许值0和1?
谢谢.我还有一个问题:如何在文本框控件中禁用剪贴板中的put文本?
我有一个像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应该删除所有无法访问的对象?
我有一个使用JDBC数据库的简单查询,这个查询很慢,即使查询本身似乎不是问题.剖析器显示花费了大量时间:
ResultSet#getString(String)
Run Code Online (Sandbox Code Playgroud)
方法,其中一些方法是检索NUMBER具有Java long精度或其附近的Oracle 列.这些值也可以为null.
我猜测getString(String)返回一个定义为数字的列值时很慢 - 并且考虑使用getLong(String)但当然返回一个不能为null的原语.
有没有更好的办法?JDBC NUMERIC值是否可以作为对象返回,而不将其转换为String或产生任何其他转换成本?
一般来说,我仍然是一个测试新手的单位.
顺便说一句,你还可以看到其他论坛,如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.
我想回归测试t-sql存储过程.我的想法是为每个SP指定多个输入参数集.应使用这些参数执行SP,结果应写入光盘.下次将新结果与之前存储的结果进行比较.
有没有人知道这样的好工具?应该不难实现,但在实践中,您将需要"忽略该列"等功能.我会假设这样的工具应该已经存在!?
欢呼,阿奇姆