假设我们有一些任务,可以分为独立的子任务,我们希望在同一台机器上并行处理这些任务。
我读过多线程并遇到了this post,它描述了GlobalInterpreterLocks。由于我不完全了解流程如何处理,我得问:
不考虑线程的增益:多线程(在我的情况下是python)与多次调用脚本有效吗?
我希望这个问题不会导致这个问题,并且对于那些对计算机低级别发生的事情知之甚少的人来说,它的答案是可以理解的。感谢您对此事的任何启发。
答案 0 :(得分:8)
多线程(在我的例子中是python)和多次调用脚本一样有效吗?
总之,没有。
由于GIL,在Python中使用多个进程比使用多个线程更容易实现真正的并行性。多次调用脚本(可能是使用不同的参数)是使用多个进程的一个示例。 multiprocessing
模块是通过使用多个进程实现并行性的另一种方法。两者都可能比使用线程提供更好的性能。
如果我是你,我可能会认为multiprocessing
是跨核心分配工作的首选。
答案 1 :(得分:1)
一个是多线程,而另一个是为彼此打开单独的进程,这是不一样的:
以下是here:
的简短说明首先要确定流程之间的差异,这一点非常重要 线程。线程与它们共享的进程不同 状态,内存和资源。这个简单的区别是a 线程的力量和弱点。一方面,线程是 轻巧且易于沟通,但另一方面,它们 提出一系列问题,包括死锁,种族问题 条件和纯粹的复杂性。幸运的是,由于GIL和 排队模块,Python中的线程要复杂得多 实施比其他语言。