如何检测我可以&我应该跑?

时间:2016-08-27 09:35:34

标签: python multithreading

我有第6代Intel i5处理器(4核,3 ghZ)和8 GB RAM。让我们假设我需要创建一个文本文件,其中包含0到999999999之间的每个数字。

我怎样才能让它更快?我应该使用多少个线程? 4个或4个以上?我应该运行多少个线程?为什么?

3 个答案:

答案 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上