所以这或多或少是一个理论问题。我有一台功能强大的单核计算机,但是却只有一个核。现在我有两个选择:
多线程处理:就我所知,即使我由于GIL而拥有多个内核,也无法在我的计算机中使用多个内核。因此,在这种情况下,它没有任何区别。
多处理:这是我所怀疑的地方。我可以在单核计算机上进行多处理吗?还是每次我必须检查机器中可用的内核,然后运行完全相同或更少数量的进程?
有人可以指导我有关机器中多处理与内核之间的关系。
我知道这是一个理论上的问题,但是我对此并不十分清楚。
答案 0 :(得分:2)
您可以在单核系统中同时使用多线程和多处理。
无论您的基础体系结构如何,GIL都限制了纯Python中多线程对计算绑定任务的有用性。对于受I / O约束的任务,它们确实可以很好地工作。如果它们没有任何用处,那么可能一开始就不会实现。
对于纯Python软件,在并行计算方面,多处理始终是一个更安全的选择。当然,多个进程比多个线程更昂贵(因为与线程相反,因为进程不共享内存,而且与线程相比,进程的开销略高)。
但是,对于单处理器计算机,多处理(和多线程)在处理繁重的任务时几乎没有增加额外的速度,实际上它们甚至会使您变慢。但是,如果操作系统支持它们(在台式机,工作站,集群等中很常见,但在嵌入式系统中可能并不常见),则它们使您可以有效地同时运行多个受I / O约束的程序。
长话短说,这取决于您在做什么...
答案 1 :(得分:1)
multiprocessing模块基本上会产生多个python解释器实例,因此无需担心GIL。
多重处理使用的是threading模块所使用的相同API,如果您以前曾使用过。
您似乎对多处理,线程(您指的是多线程)和X核处理器感到困惑。
答案 2 :(得分:1)
这是一个大话题,但这里有一些提示。