多线程(在python中)与多次调用脚本相同吗?

时间:2012-02-23 11:19:26

标签: python multithreading

假设我们有一些任务,可以分为独立的子任务,我们希望在同一台机器上并行处理这些任务。

我读过多线程并遇到了this post,它描述了GlobalInterpreterLocks。由于我不完全了解流程如何处理,我得问:

不考虑线程的增益:多线程(在我的情况下是python)与多次调用脚本有效吗?

我希望这个问题不会导致这个问题,并且对于那些对计算机低级别发生的事情知之甚少的人来说,它的答案是可以理解的。感谢您对此事的任何启发。

2 个答案:

答案 0 :(得分:8)

  

多线程(在我的例子中是python)和多次调用脚本一样有效吗?

总之,没有。

由于GIL,在Python中使用多个进程比使用多个线程更容易实现真正的并行性。多次调用脚本(可能是使用不同的参数)是使用多个进程的一个示例。 multiprocessing模块是通过使用多个进程实现并行性的另一种方法。两者都可能比使用线程提供更好的性能。

如果我是你,我可能会认为multiprocessing是跨核心分配工作的首选。

答案 1 :(得分:1)

一个是多线程,而另一个是为彼此打开单独的进程,这是不一样的:

以下是here

的简短说明
  

首先要确定流程之间的差异,这一点非常重要   线程。线程与它们共享的进程不同   状态,内存和资源。这个简单的区别是a   线程的力量和弱点。一方面,线程是   轻巧且易于沟通,但另一方面,它们   提出一系列问题,包括死锁,种族问题   条件和纯粹的复杂性。幸运的是,由于GIL和   排队模块,Python中的线程要复杂得多   实施比其他语言。