Windows 7是否自动为Python 3代码使用多个处理器?

时间:2010-08-26 03:46:38

标签: python windows-7 parallel-processing

我有windows 7,我编写了一个python程序,在多个数据库上循环(“for循环”,即“for dict”),检查各种条件(例如,如果x在dict中,y + = 1 )然后计算结果。我没有采取任何措施来处理程序。我的计算机上有8个CPU核心。当我在运行程序时启动Windows任务管理器时,它会在所有8个核心上显示大量活动。 Windows是否在多个处理程序中执行parralel中的for循环而没有做任何事情?代码执行速度很快。

2 个答案:

答案 0 :(得分:4)

没有。 Python的C实现只允许一个线程一次解释一个字节码。利用多个核心的唯一方法是使用多个线程或多个进程。

完全有可能您会看到与您的脚本相关的多个核心活动。假设你打开几个文件进行阅读或写作。操作系统将缓冲Python正在进行的读/写调用(代表您的脚本),并在某些情况下在该语句完成之前将控制权返回给下一个语句。然而,这是操作系统,而不是Python进行优化。

Python的Java实现将执行Java的本机版本将在您的操作系统上执行的操作。

Here是对同一主题的更完整的讨论。

答案 1 :(得分:2)

你的问题的答案是“不” - 无论你的8个核心中的7个核心发生了什么,它都是Windows在后台“做它的事情(服务和诸如此类的东西)”。当你想要在多个内核上进行并行化时,你需要使用Python标准库的multiprocessing模块(还有其他方法,但没有一个像这样简单方便)。