現(xiàn)在的 PC 都是多核的,使用多線程能充分利用 CPU 來提供程序的執(zhí)行效率。
線程
線程是一個(gè)基本的 CPU 執(zhí)行單元。它必須依托于進(jìn)程存活洞坑。一個(gè)線程是一個(gè)execution context(執(zhí)行上下文),即一個(gè) CPU 執(zhí)行時(shí)所需要的一串指令赏表。
進(jìn)程
進(jìn)程是指一個(gè)程序在給定數(shù)據(jù)集合上的一次執(zhí)行過程检诗,是系統(tǒng)進(jìn)行資源分配和運(yùn)行調(diào)用的獨(dú)立單位匈仗∑敖耍可以簡單地理解為操作系統(tǒng)中正在執(zhí)行的程序。也就說悠轩,每個(gè)應(yīng)用程序都有一個(gè)自己的進(jìn)程间狂。
每一個(gè)進(jìn)程啟動時(shí)都會最先產(chǎn)生一個(gè)線程,即主線程火架。然后主線程會再創(chuàng)建其他的子線程鉴象。
兩者的區(qū)別
線程必須在某個(gè)進(jìn)行中執(zhí)行。
- 一個(gè)進(jìn)程可包含多個(gè)線程何鸡,其中有且只有一個(gè)主線程纺弊。
- 多線程共享同個(gè)地址空間、打開的文件以及其他資源骡男。
- 多進(jìn)程共享物理內(nèi)存淆游、磁盤、打印機(jī)以及其他資源。
- 進(jìn)程之間不共享數(shù)據(jù)的拾稳。如果進(jìn)程之間需要進(jìn)行通信,則要用到Queue模塊或者Pipi模塊來實(shí)現(xiàn)腊脱。
python并行處理任務(wù)時(shí) 該用多進(jìn)程?還是該用多線程陕凹?_David的技術(shù)博客_51CTO博客