Windows 7会自动为Python 3代码使用多个处理器吗?
我用的是Windows 7,写了一个Python程序,这个程序会对多个数据库进行循环处理(比如用“for循环”,也就是“for key in dict”),检查各种条件(例如,如果x在字典里,y就加1),然后统计结果。我没有做任何让处理并行化的操作。我的电脑有8个CPU核心。当我在运行程序时打开Windows任务管理器,发现所有8个核心都有很大的活动。这是不是说明Windows在没有我做任何设置的情况下,就把这些for循环在多个处理器上并行执行了呢?而且代码运行得很快。
2 个回答
2
你的问题的答案是“没有”——在你8个核心中的7个上发生的事情,都是Windows在“后台”处理它的各种服务和任务。当你想要在多个核心上同时处理任务时,你需要使用Python标准库中的multiprocessing模块(还有其他方法,但没有这种方式简单方便)。
4
不可以。Python的C语言实现一次只能让一个线程处理一个字节码。要利用多个核心,必须使用多个线程或多个进程。
不过,你的脚本可能会看到多个核心在活动。比如说,你同时打开了几个文件进行读写。操作系统会对Python发出的读写请求进行缓冲,这样在某些情况下,它会在某个操作还没完成之前就把控制权交给下一个语句。这种优化是操作系统做的,而不是Python。
Python的Java实现会按照你操作系统上Java的本地版本来运行。
这里有关于这个话题更详细的讨论。