python多程序程式設計指引

2021-09-22 22:33:34 字數 2235 閱讀 8396

程序ip

應用場景

提示 小結

fork

forkserver

設定程序的啟動方式

get_context()方法來獲取context物件

map(func, iterable[, chunksize])

map_async(func, iterable[, chunksize[, callback[, error_callback]]])imap(func, iterable[, chunksize])這是 map() 方法的延遲版本

imap_unordered(func, iterable[, chunksize])

starmap(func, iterable[,chunksize])

close()關閉程序池,把當前程序池中的所有任務執行完成後再關閉自己

terminate()立即中止程序池

join()等待所有程序完成

技巧

import multiprocessing

import os

import time

# 程序任務函式

def action(max):

my_sum = 0

for i in range(max):

print('(%s) 程序正在執行: %d' % (os.getpid(), i))

my_sum += i

return my_sum

if __name__ == '__main__':

# 建立乙個包含4條程序的程序池

with multiprocessing.pool(processes=4) as pool:

results = pool.map(action, (5, 10, 15))

print('--------------')

for r in results:

print(r)

multiprocessing模組下的 queue

使用pipe實現程序間通訊

pipeconnection常用方法

recv()接收另一端通過 send() 方法傳送過來的資料

fileno()關於連線所使用的檔案描述器

close()關閉連線

poll([timeout])返回連線中是否還有資料可以讀取

send_bytes(buffer[, offset[, size]])傳送位元組資料

recv_bytes([maxlength])maxlength 指定最多接收的位元組數

recv_bytes_into(buffer[, offset])功能與 recv_bytes() 方法類似,只是該方法將接收到的資料放在 buffer 中

import multiprocessing

def f(conn):

print('(%s) 程序開始傳送資料...' % multiprocessing.current_process().pid)

conn.send('python')

if __name__ == '__main__':

# 建立pipe,該函式返回兩個pipeconnection物件

parent_conn, child_conn = multiprocessing.pipe()

# 建立子程序

p = multiprocessing.process(target=f, args=(child_conn,))

# 啟動子程序

p.start()

print('(%s) 程序開始接收資料...' % multiprocessing.current_process().pid)

# 通過管道來讀取內容,等待解除阻塞

print(parent_conn.recv())

# 阻塞主程序,直到子程序執行完畢,才解除

p.join()

python多程序 Python多程序程式設計詳解

本文 在 python 3.6 環境下測試通過。多程序 multiprocessing 模組是在 python 2.6 版本中加入的,和多執行緒 threading 模組類似,都是用來做並行運算的。不過python既然有了threading,為什麼還要搞乙個multiprocessing呢?這是因為...

python 多程序程式設計

多程序指的是乙個程式可以啟動多個程序執行,一般模式如下 import multiprocessing from multiprocessing import process,current process import time cup 核數量 num cpus multiprocessing.cp...

python多程序程式設計

python多程序程式設計。最近開始學習python程式語言,詳細參照 python絕技運用python成為頂級黑客 在學習過程第一章節中,編寫破解linux shadow檔案時,想利用多執行緒加快破解速度。主機執行環境為windows下的vm workstation上的一台虛擬機器,執行多執行緒 ...