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

将计算机的所有功能分配给Python,python,cpu,Python,Cpu,我正在运行一个python程序来查找所有素数。是否有可能将所有计算机的电源分配给这项任务。通过使用我的处理器拥有的所有4个内核 谢谢 p、 我当然在用Linux 我使用的代码是: nextCheck = time.time() + 60 primesFound = 0 while 1: if isPrime(toTest): open("primeList.txt", "a").write(str(toTest)+"\n") primesFound +=

我正在运行一个python程序来查找所有素数。是否有可能将所有计算机的电源分配给这项任务。通过使用我的处理器拥有的所有4个内核

谢谢

p、 我当然在用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  
使用多处理。如果您使用的是CPython,那么一次只有一个线程可以执行Python字节码,所以使用线程没有多大帮助


例如,如果您可以编写一个简单的函数来测试一个数字,则可以使用多处理.Pool对象的map方法将该函数应用于数字列表。

您还可以使用nice为Python进程分配更高的优先级:

nice -n -20 python app.py
。。。这会有帮助,但不能保证你正在从你的电脑中挤出所有的能量

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

不要将数字直接写入输出文件并保存在内存结构中, 编写一个事件,用于不始终检查是否需要打印速度统计数据, 尝试将在函数isPrime中执行的操作拆分为多个并发任务,以便将它们作为单独的任务执行。
。。。但是,我不知道这个应用程序是否值得这样做。

您使用的是线程还是多处理?如果您使用的是单线程应用程序,您就不能希望使用多个内核。您是说多个内核吗?还是素数?在任何一种情况下,都不可能找到它们——两者的数量都是无限的……,即使您在linux上运行。您可以用C编写应用程序,在当前的实现中,C通常比Python快得多,你应该考虑多线程,即多线程处理,也许还可以使用GPGPU。显然,电子前沿基金会为已知的第一个1亿位质数提供了150000美元的奖励。一旦你发现了这一点,你就可以买一台更大的电脑……iPrime是如何定义的?有一些聪明的数学算法比Erasthothene的筛子更适合计算素数。nice-n-20帮不了什么忙,除非系统负载高到足以让许多可运行进程争夺CPU,而这在普通桌面上是不一样的。@桌面上的BasileStryneVitch正是一个有许多进程争夺CPU使用的地方。例如,您将拥有与桌面本身的图形执行有关的所有进程,即web navigator。。只要在控制台中执行top,您就会看到现在有多少个可运行进程……我写过关于可运行进程的文章。我确实有很多进程,大约250个,但大多数几乎都是空闲的。。。。我当前的负载大约是0.15。。。。