如何在python中使用线程

时间:2010-11-30 23:55:17

标签: python multithreading

我想用它来读取17770文件中的值,并将它们的所有内容添加到一个字典对象中。我有一台8核的机器。

这是代码

def run_item_preprocess ():
    scores = {};
    for i in range(1,17771):
        filename1 = "x_" + str(i) + ".txt";
        lines1 = open(filename1).readlines();
        Item1 = {};
        for line in lines1:
            tokens = line.split(',');
            Item1[int(tokens[1])] = int(tokens[2]);
        for j in range(1,17771):
            if j == i:
                continue;
            filename2 = "x_" + str(i) + ".txt";
            lines2 = open(filename2).readlines();
            Item2 = {};
            for line in lines2:
                tokens = line.split(',');
                u = int(tokens[1]);
                r = int(tokens[2]);
                if u in Item1:
                    Item2[u] = r;
            if i not in scores:
                scores[i] = {};
            scores[i]= (s(Item1,Item2),j);

3 个答案:

答案 0 :(得分:4)

这是精彩的multiprocessing模块。它允许您使用进程而不是线程来并行化代码。这将使用所有核心。

一个重要的区别是进程不共享内存;队列将有助于减少步骤。

答案 1 :(得分:1)

以下是python库引用的一些很好的部分。

http://docs.python.org/py3k/library/threading.html

http://docs.python.org/py3k/library/_thread.html

至于如何有效地使用线程,我建议你使用谷歌'python线程教程'或类似的东西。

答案 2 :(得分:0)

您如何看待使用线程会对此有所帮助?

虽然Python支持线程,但标准实现(CPython)执行only one thread at a time。因此,很难看出这会如何使流程运行得更快,即使在多核上也是如此。

(如果您使用的是JPython或IronPython,则此限制不适用。)