執行緒程序 五 程序池

2021-09-27 03:34:42 字數 2456 閱讀 2345

process(target=,args=,).start() join()
p = pool(num) #建立乙個包含有num個空閒程序的池子

建立大規模任務,pool(100)

from mutliprocessing import pool

process(target,args),lock()

**p.close() **

p.join()

p.terminate()

程序池的工作的返回值:

res.get()

pipe() 程序池通訊沒有管道

queue()

from multiprocessing import pool,manager,queue

from time import sleep

import sys

import os

#pid,ppid = os.fork() #核心函式

#if ppid == 0: 子程序

#if pid > 0: 父程序

def work_a(q):

#生產者 放十次

for var in range(10):

print('生產者:',var)

sys.stdout.flush()

q.put(var)

sleep(1)

def work_b(q):

#消費者,拿十次

for var in range(10):

res = q.get() #阻塞行為

print('消費者:',var)

sys.stdout.flush()

#cpu 過來處理報錯 終止程序,丟擲錯誤

def main():

q = manager().queue() #程序共享佇列

p = pool(5) #程序可以復用

p.close()

p.join()

if __name__ == '__main__':

main()

from multiprocessing import pool

import sys

def work_a():

for var in range(1,2000):

print(var)

sys.stdout.flush()

return 'a'

def work_b():

for var in range(2000,4000):

print(var)

sys.stdout.flush()

return 'b'

def work_c():

for var in range(4000,6000):

print(var)

sys.stdout.flush()

return 'c'

def main():

p = pool(4) #引數:可以最多同時執行任務個數,並不是填充的最大任務個數

print('a程序:%s' % a.get()) #生成器

print('b程序:%s' % b)

print('c程序:%s' % c)

p.close() #先關閉程序池,不代表程序池中的任務要停止

#關閉了之後打不開了

p.join()

if __name__ == '__main__':

main()

from multiprocessing import pool

import sys

def work_a():

for var in range(1,2000):

print(var)

sys.stdout.flush()

def work_b():

for var in range(2000,4000):

print(var)

sys.stdout.flush()

def work_c():

for var in range(4000,6000):

print(var)

sys.stdout.flush()

def main():

p = pool(2) #引數:可以最多同時執行任務個數,並不是填充的最大任務個數

#?: 是否是阻塞行為執行完這三個任務

#阻塞的話:1個等乙個,同步

#非阻塞:非同步

p.close()

p.join()

if __name__ == '__main__':

main()

程序池 執行緒池

程序池和執行緒池相似,所以這裡我們以程序池為例介紹,下面對程序池的討論完全適用於執行緒池 如果沒有特殊宣告 程序池是由伺服器預先建立的一組子程序,這些子程序的數目在3 10個之間 典型情況 執行緒池的數量應該和cpu數量差不多。程序池中的所有子程序都執行者相同的 並具有相同的屬性。因為程序池在伺服器...

執行緒池 程序池

執行緒池 程序池 池子解決什麼問題?1.建立 銷毀執行緒伴隨著系統開銷,如果過於頻繁會影響系統執行效率 2.執行緒併發數量過多,搶占系統資源,從而導致系統阻塞甚至宕機 3.能夠剛好的控制和管理池子裡面的執行緒和程序 concurrent.futures模組提供了高度封裝的非同步呼叫介面 thread...

程序池, 執行緒池

知識儲備 池 裝載固定數量介質,該介質值得是程序或者執行緒 為什麼要用?讓機器在自己可承受的範圍內去保證乙個高效的工作 from concurrent.futures import processpoolexecutor,threadpoolexecutor pool processpoolexec...