python中的多執行緒和多程序

2021-07-25 16:13:23 字數 1193 閱讀 4755

python中的多執行緒和多程序

如果使用multiprocessing模組是相當簡單的,通過程序池或執行緒池來限定併發的數量。

建立多程序和多執行緒的語法是一樣的,只需要將pool替換為threadpool即可將多程序替換為多執行緒。

from multiprocessing import pool  # 程序池

from multiprocessing.dummy import pool as threadpool # 執行緒池

defdo_something

(args):

# 注意,如果有多個引數,需要包裝成乙個tuple傳入

param1,param2 = args

#獲取當前執行緒的名字

name = multiprocessing.current_process().name

print('process=%s, p1=%d, p2=%d' %(name, param1,param2))

return n*2

defmain

():# 注意,如果需要傳入過個引數,需要整理成tuple格式

# task是乙個可迭代物件,傳入需要計算的引數

task=[(1,11),(2,22),(3,33),(4,44),(5,55),(6,66),(7,77)]

# 多程序示例

pool = pool(4) # 開4個核

result = pool.map(do_something, task) # 將每個程序的結果組成list

pool.close() # 關閉程序池(pool),使其不在接受新的任務

pool.join() # 等待子程序結束

# 多執行緒示例

pool = threadpool(20) # 20個執行緒

result = pool.map(do_something, task)

pool.close()

pool.join()

if __name__ == '__main__':

main()

有些資料說,要將多程序多執行緒pool.map寫在if __name__ == '__main__'後面才能執行,後來發現不用。

但是,在relp模式下肯定是不會成功的。

參考

python 多執行緒 和 多程序

單執行緒例子 usr bin python coding utf 8 name danxiancheng.py import time import threading def loop num,sec print loop s start num,time.strftime y m d h m s...

python多執行緒和多程序

pool 感謝多執行緒和多程序最大的不同在於,多程序中,同乙個變數,各自有乙份拷貝存在於每個程序中,互不影響 而多執行緒中,所有變數都由所有執行緒共享,所以,任何乙個變數都可以被任何乙個執行緒修改,因此,執行緒之間共享資料最大的危險在於多個執行緒同時改乙個變數,把內容給改亂了。python中,多執行...

多程序和多執行緒python

coding utf8 import threading import time class mop floor threading.thread def init self super mop floor,self init def run self print 我要拖地了 time.sleep ...