2012-02-23 101 views
2

我們假設我們有一些任務,可以分爲獨立的子任務,我們希望在同一臺機器上並行處理這些任務。多線程(在python中)與多次調用腳本相同嗎?

我閱讀了關於多線程的內容,遇到了描述GlobalInterpreterLocks的this post。由於我不完全理解程序如何在引擎蓋下處理,所以我得問:

撇開線程化的好處:多線程(在我的情況下,在Python中)有效地多次調用腳本?

我希望這個問題不會導致太多,其答案對於那些對計算機低層次上發生的事情的知識稀少的人是可以理解的。感謝您對此事的任何啓發。

回答

8

是多線程(在我的情況下在python中)有效的多次調用腳本相同嗎?

總之,沒有。

由於GIL,在Python中,通過使用多進程而不是使用多線程來實現真正的並行性要容易得多。多次調用腳本(推測使用不同的參數)是使用多個進程的示例。 multiprocessing模塊是通過使用多個進程來實現並行性的另一種方式。兩者都可能比使用線程提供更好的性能。

如果我是你,我可能會認爲multiprocessing是跨核心分配工作的首選。

+0

「在Python中,使用多進程比通過使用多線程實現真正的並行性要容易得多」&「兩者可能會比使用線程提供更好的性能」 - 它在Python中表示爲** * *,但我只是想澄清一下,這適用於Python,而不是一般(因爲我一直在閱讀的其他文章沒有提及多處理與多線程的更好性能) – Abdul 2016-08-11 12:07:41

1

這不是一個是多線程同樣的事情,而另一個則是打開獨立的進程對彼此:

這裏從here採取了簡短的解釋:

它首先定義是非常重要的線程之間的差異和 線程之間的差異。線程與進程不同,它們共享狀態,內存和資源。這個簡單的差異既是一個 的實力和線程的弱點。一方面,線程是輕量級且易於溝通的,但另一方面,它們帶來了一系列問題,包括死鎖,競賽 條件和純粹的複雜性。幸運的是,由於GIL和 這個排隊模塊,Python的線程化比其他語言的實現要簡單得多。