我想用它来读取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);
答案 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,则此限制不适用。)