将所有计算机的功能分配给Python

时间:2013-10-26 17:28:08

标签: python cpu

我正在运行一个查找所有素数的python程序。是否可以将所有计算机的功率分配给此单个任务。通过使用我的处理器拥有的所有4个内核?

谢谢!

P.S。我当然正在使用Linux!

我正在使用的代码是:

nextCheck = time.time() + 60
primesFound = 0
while 1:
    if isPrime(toTest):
        open("primeList.txt", "a").write(str(toTest)+"\n")
        primesFound += 1
    toTest += 2

    if (toTest+1) % 1000 == 0:
        if time.time() >= nextCheck:
            print "Average speed: " + str(float(primesFound)/((time.time()-nextCheck)+60)) + "/s"
            primesFound = 0
            nextCheck = time.time() + 60  

2 个答案:

答案 0 :(得分:2)

使用multiprocessing。如果你正在使用CPython,一次只有一个线程可以执行Python字节码,所以使用线程没有多大帮助。

如果可以,例如编写一个简单的函数来测试一个数字,你可以使用multiprocessing.Pool对象的map()方法将该函数应用于数字列表。

答案 1 :(得分:0)

您还可以使用nice:

为Python进程分配更高的优先级
nice -n -20 python app.py

......这会有所帮助,但不能保证你会从电脑中榨取所有电力。

对于该代码,您可以尝试的最好的是:

  1. 不要将数字直接写入输出文件并将其保存在内存结构中,
  2. 编写一个事件,不会一直检查是否需要打印速度统计信息,
  3. 尝试在几个并发任务中拆分在函数“isPrime”中执行的操作,以便将它们作为separte任务执行。
  4. ...但是,我不知道这个应用程序是否值得这样做。