我有第6代Intel i5处理器(4核,3 ghZ)和8 GB RAM。让我们假设我需要创建一个文本文件,其中包含0到999999999之间的每个数字。
我怎样才能让它更快?我应该使用多少个线程? 4个或4个以上?我应该运行多少个线程?为什么?
答案 0 :(得分:1)
由于您正在写入同一个文件,因此您需要锁定才能使文本不会出现乱码。但是,如果您正在使用锁定,则多线程或多处理不会产生任何影响,因为它将按顺序写入。
不使用锁定会得到如下结果:
1, 2, 3, 54,, ...
因为一个线程将自己编写,另一个线程将同时写入。
答案 1 :(得分:1)
因为GIL你应该使用多处理模块。进程数应为:
multiprocessing.cpu_count() - 1 # -1 for other system process.
答案 2 :(得分:0)
感谢您的回答&评论。我无法尝试多处理模块,因为我正在度假,而我的计算机有两个核心,它将是相同的(系统为1,python为1)。但是一旦我回到家,我就会在多处理过程中添加结果。所以,这是我的测试结果与英特尔奔腾双核1.80ghZ:
没有额外的线程需要4秒钟 使用一个额外的线程需要3秒钟。
在第二个帖子之后它没有改变。我尝试了3个,4个和5个线程,每次花费3秒钟。
以下是代码;
http://paste.ubuntu.com/23098237/> 1个线程
http://paste.ubuntu.com/23098229/> 2线程
http://paste.ubuntu.com/23098131/> 3线程
http://paste.ubuntu.com/23098136/> 4线程
http://paste.ubuntu.com/23098139/> 5个线程
抱歉,我无法在此处粘贴代码,它说"没有正确格式化为代码"。我尝试了10分钟,(ctrl + k,4个空格)它没有用,所以我只是贴在paste.ubuntu.com上