python之threading與multiprocess,進程與線程


進程:進程(Process)是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,簡單來說就是幾個cpu核心就可以開幾個進程

線程:線程(英語:thread)是操作系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位,簡單來說就是一個進程可以開很多線程。

 

而python中對於多進程的優化據說不是太好,在基礎庫里提供了threading(線程),與multiprocessing(進程)的基礎庫

1、多進程

## 多線程
import threading

## 線程執行函數
def func():
    print('thread:',threading.current_thread())

## 線程池
threads = []

## 添加線程
for _ in range(5):
    threads.append(threading.Thread(target=func))

## 啟動線程
for thread in threads:
    thread.start()
    thread.join()

結果:

 

2、多線程

## 多進程
import multiprocessing
## 進程需要執行的函數
def func():
    print('process',multiprocessing.current_process())

## 有幾個cpu核心添加幾個進程
for _ in range(2):
    multiprocessing.Process(target=func).start()

結果:

 

3、多進程與多線程

 

import multiprocessing
import threading
import time
## 線程執行的函數
def func():
    print('thread:',threading.current_thread())
    print(time.time(),'\n')
## 線程執行的函數
def bar():
    ## 線程池
    threads = []

    ##這里添加2個線程
    for _ in range(2):
        threads.append(threading.Thread(target=func))

    ## 啟動線程
    for thread in threads:
        thread.start()
        thread.join()

## 進程池
multiprocess = []

## 有幾核心cpu啟動幾個
for i in range(2):
    multiprocess.append(multiprocessing.Process(target=bar))

## 啟動進程
for j in multiprocess:
    j.start()
    j.join()

 

 

 

查看結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM