在Twisted中关闭的多线程任务队列

时间:2015-02-19 19:19:00

标签: python concurrency twisted

我正在尝试用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。

0 个答案:

没有答案