我正在运行一个查找所有素数的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
答案 0 :(得分:2)
使用multiprocessing
。如果你正在使用CPython,一次只有一个线程可以执行Python字节码,所以使用线程没有多大帮助。
如果可以,例如编写一个简单的函数来测试一个数字,你可以使用multiprocessing.Pool
对象的map()
方法将该函数应用于数字列表。
答案 1 :(得分:0)
您还可以使用nice:
为Python进程分配更高的优先级nice -n -20 python app.py
......这会有所帮助,但不能保证你会从电脑中榨取所有电力。
对于该代码,您可以尝试的最好的是:
...但是,我不知道这个应用程序是否值得这样做。