多处理器编程和多核编程有什么区别?最好在python中展示如何编写用于多道程序设计和多核编程的小程序的例子
我已经创建了一个(相当大的)程序,需要很长时间才能完成,我开始研究加速程序的方法.
我发现如果我在程序运行时打开任务管理器,则只使用一个核心.
经过一些研究,我找到了这个网站:
为什么多重处理在导入numpy后只使用一个核心?这提供了一个解决方案os.system("taskset -p 0xff %d" % os.getpid()),但这对我不起作用,我的程序继续在单核上运行.
然后我发现这个: python是否能够在多个内核上运行?,指向使用多处理.
因此,在研究了多处理之后,我遇到了关于如何使用它的纪录片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")
Run Code Online (Sandbox Code Playgroud)
运行代码后(不是在IDLE中)它说:
Finished
hello bob
Finished
Run Code Online (Sandbox Code Playgroud)
注意:说完之后我第一次按下回车
所以在此之后我现在更加困惑,我有两个问题
第一:它仍然没有多核运行(我有一个8核Intel i7)
第二:为什么在它甚至运行if语句代码之前输入"Finished"(它甚至还没有完成!)
我写了这样的代码:
def process(data):
#create file using data
all = ["data1", "data2", "data3"]
Run Code Online (Sandbox Code Playgroud)
我想在我的所有列表上并行执行进程函数,因为它们正在创建小文件,所以我不关心磁盘写入,但处理需要很长时间,所以我想使用我的所有内核。
如何使用 python 2.7 中的默认模块执行此操作?