python 如何充分利用多核

How to fully take advantage of multi-cores by python

我用 python 在 Ubuntu

上执行了这个程序
import thread
import time

# Define a function for the thread
def print_time( threadName, delay):
   count = 0
   while True:
      count += 1

# Create two threads as follows
try:
   for index in xrange(1,50000):
     thread.start_new_thread( print_time, ("Thread-" + str(index), 0, ) )

except:
   print "Error: unable to start thread"

while 1:
   pass

我希望所有 8 个内核都使用 100%,但是通过系统监视器我只得到前 4 个内核的 50% 使用率和最后 4 个内核的 25% 使用率。 我怎样才能使所有 8 个内核都达到 python 的 100% 使用率?

像这样的事情会让你开始。您需要调整 num_processes 以匹配您的硬件。

import multiprocessing as mp
import time

def slow_func():
    while True:
        for i in xrange(99999):
            j = i*i

def main():
    num_processes = 4

    for _ in range(num_processes):
        process = mp.Process(target = slow_func)
        process.daemon = True
        process.start()

    while True:
        time.sleep(1)

if __name__ == '__main__':
    main()

编辑: 这对我来说适用于 Windows 4 核,并提供 4x 25% 的处理器使用率。

要与线程模块进行比较,您可以 import threading 并将行 process = mp.Process(target = slow_func) 替换为 process = threading.Thread(target = slow_func)。您应该会发现它只使用了您的一个内核。