我创建了一个(相当大的)程序,需要很长时间才能完成,我开始研究如何加速程序。在多个核心上运行Python
我发现如果我在程序运行时打开任务管理器,那么只有一个内核正在使用。
经过一番研究,我发现这个网站: Why does multiprocessing use only a single core after I import numpy?赋予的os.system("taskset -p 0xff %d" % os.getpid())
的解决方案, 然而,这并没有为我工作,我的计划继续在单一内核上运行。
然后我发现: is python capable of running on multiple cores?, 指向使用多处理。
所以寻找到多后,我碰到这个纪录片来了解如何使用它https://docs.python.org/3/library/multiprocessing.html#examples
我试过代码:
from multiprocessing import Process
def f(name):
print('hello', name)
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()
a = input("Finished")
运行的代码(不是在IDLE)它说,这之后:
Finished
hello bob
Finished
注:后说完我第一次按下输入
所以在此之后我现在更糊涂了,我有两个问题
第一:它仍然不具有多内核上运行(我有一个8核心英特尔酷睿i7)
二:为什么它输入在完成if语句代码之前“已完成”(并且它还没有完成!)
是的,因为你只能有一个过程,所以它只会使用一个内核。 –
另外,你使用'numpy'?因为那个链接似乎并不相关。 –
那么如何在for语句中需要执行大量乘/减操作的情况下使用多核?例如'对于范围内的每个(1000):a = a * each' –