我正在尝试用Python编写多线程脚本来处理大型文件列表。在过去,我使用过像GNU Parallel这样的工具,但我的需求开始超过该程序所能提供的功能。
我用Java编写了一个简单的演示,演示了我想在这里做的事情:
public class ExecutorTest {
private ExecutorService executorService = Executors.newFixedThreadPool(8);
public static void main(String[] args) {
ExecutorTest t = new ExecutorTest();
t.start();
}
public ExecutorTest() {
}
public void start() {
File f = new File(".");
for (File file : f.listFiles()) {
final String fullPath = file.getAbsolutePath();
this.executorService.submit(new Runnable() {
@Override
public void run() {
// sleep for up to 100 milliseconds
try { Thread.sleep(new Double(Math.random() * 100.0).longValue()); } catch (InterruptedException e) {}
System.out.println(fullPath);
}
});
}
this.executorService.shutdown();
try {
this.executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
我想在Twisted中做同样的事情,但是我很难理解所有工作部分是如何组合在一起的,所以我可以启动一个有界的多线程工作队列,然后等待它完成。< / p>
你怎么在Twisted中写这样的东西?我在Python中做了很多工作,所以我不学习Python,我只想弄清楚如何使用Twisted。