1. 程式人生 > >Python程序池的概念和實現

Python程序池的概念和實現

1 使用程序池實現socket 通訊

ftp服務端

#!/usr/bin/python
# -*- coding utf8 -*- 

from multiprocessing import Process,Pool
from socket import *
import os

server=socket(AF_INET,SOCK_STREAM)
server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
server.bind(('127.0.0.1',8080))
server.listen(5)
def talk(conn,addr):
    print(os.getpid())
    while True:#通訊迴圈
        try:
            msg=conn.recv(1024)
            if not msg:break
            conn.send(msg.upper())
        except Exception:
            break

if __name__ == '__main__':
    pool=Pool()
    res_l=[]
    while True:#連結迴圈

        conn,addr=server.accept()
        print(addr)
        #pool.apply(talk,args=((conn,addr)))    #同步
        res=pool.apply_async(talk, args=((conn, addr)))
        res_l.append(res)

        # p=Process(target=talk,args=((conn,addr)))
        #p.start()

客戶端資訊
#!/usr/bin/python
# -*- coding utf8 -*- 

from multiprocessing import Process
from socket import *
client=socket(AF_INET,SOCK_STREAM)
client.connect(('127.0.0.1',8080))
while True:
    msg=input('msg: ').strip()
    if not msg:continue
    client.send(msg.encode('utf-8'))
    msg2=client.recv(1024)
    print(msg2.decode('utf-8'))


可以多開幾個客戶端 然後執行

此示例的cpu_count()為4

啟動了5個客戶端

執行之後呢  第五個客戶端掛起 這時候呢 關閉任意一個客戶端 掛起的客戶端會執行 

服務端看到他的pid是關掉的那個 等同於複用了pid

這樣就避免了程序過多

相關推薦

Python程序概念實現

1 使用程序池實現socket 通訊 ftp服務端 #!/usr/bin/python # -*- coding utf8 -*- from multiprocessing import Process,Pool from socket import * impor

Python程序multiprocessing模組, Process, 程序PoolQueue

1. multiprocessing模組提供了一個Process類來代表一個程序物件:  (1)   multiprocessing.Process(group=None, target=None, name=None, args=(), kwargs={}, *, daem

Python 集合set概念操作

super ash sha amp 自己 rem val t對象 python # 集合 # 概念 # 無序的, 不可隨機訪問的, 不可重復的元素集合 # 與數學中集合的概念類似,可對其進行交、並、差、補等邏輯運算 #

淺談BloomFilter【上】基本概念實現原理

pty 是否 的人 它的 構建 網絡爬蟲 ace head filters ? ??在日常生活中。包括在設計計算機軟件時,我們常常要推斷一個元素是否在一個集合中。

python程序Pool的apply與apply_async到底怎麼用?

背景 最近在解決問題的時候遇到了上下文衝突的問題,不得不用多程序來解決這個問題。這個問題是StackOverflow沒有完整答案的問題,下一篇部落格進行介紹。 多程序 python中使用multiprocessing模組實現多程序。multiprocessing模組提供了一個

Python 程序

– Start ProcessPoolExecutor 我們使用 ProcessPoolExecutor 定義程序池。 任務沒有返回值 import multiprocessing from concurrent.futures import Process

Linux 程序概念管理

程序的概念和管理 基本概念 1、在linux中,每個執行的程式都稱為一個程序。每一個程序都分配一個ID號。 2、每一個程序,都會對應一個父程序,而這個父程序可以複製多個子程序。例如WWW伺服器。 3、每個程序都可能以兩種方式存在的。前臺與後臺,所謂前臺程序就是使用者目

python程序apply與apply_async

程序池Pool中的apply方法與apply_async的區別 apply方法是阻塞的。 意思就是等待當前子程序執行完畢後,在執行下一個程序。 示例apply的應用方法 import time from multiprocessing import Po

python程序apply與apply_async的區別

apply方法是阻塞的。 意思就是等待當前子程序執行完畢後,在執行下一個程序。 例如:   執行結果如下:   因為apply是阻塞的,所以進入子程序執行後,等待當前子程序執行完畢,在繼續執行下一個程序。 例如: 有三個程序0,1

python程序:multiprocessing.pool

在利用Python進行系統管理的時候,特別是同時操作多個檔案目錄,或者遠端控制多臺主機,並行操作可以節約大量的時間。當被操作物件數目不大時,可以直接利用multiprocessing中的Process動態成生多個程序,十幾個還好,但如果是上百個,上千個目標,手動的去限

Python---程序

程序池作用:同一時間有多個程序在CPU中執行。程序池實現步驟:(1)定義一個程序池物件:pool=Pool(processes=n)#允許程序池同時放入n個程序                 (2)設定多執行緒:for i in range(n)             

python -程序

程序池: 多工 拷貝資料夾 : ( 同步) 定義變數 = 源目錄的路徑 變數 = 目標目錄的路徑 判斷目標是否存在 ---------> os.path.exists ( 目標檔案 路徑 ): 若存在則 刪除

Python 程序的回撥函式

import os from multiprocessing import Pool,Process def f1(n): print('程序池裡面的程序id',os.getpid()) print('>>>>',n) return n*n def c

Python 程序的非同步方法

import time from multiprocessing import Process,Pool def f1(n): time.sleep(0.5) # print(n) return n*n if __name__ == '__main__': poo

Java繼承的概念實現

繼承時類和類之間的關係,是一個很簡單很直觀的概念,與顯示生活中的繼承(例如兒子繼承了父親財產)類似。繼承可以理解為一個類從另一個類中獲取方法和屬性的過程。如果類B繼承於類A,那麼類B就擁有類A的屬性和方法。繼承使用extends關鍵字。例如我們定義了一個People:publ

記憶體程序執行緒的比較分析

池的概念 由於伺服器的硬體資源“充裕”,那麼提高伺服器效能的一個很直接的方法就是以空間換時間,即“浪費”伺服器的硬體資源,以換取其執行效率。這就是池的概念。池是一組資源的集合,這組資源在伺服器啟動之初就完全被建立並初始化,這稱為靜態資源分配。當伺服器進入正式執行階段,即開始

關於python程序先close再join的疑惑

import time from multiprocessing import Pool def run(fn): #fn: 函式引數是資料列表的一個元素 time.sleep(1) ret

Python程序的使用

#!/usr/bin/evn python # -*- coding:utf-8 -*- import multiprocessing import time import threading from multiprocessing import Pool,Arr

python程序專題總結 原始碼

  python中兩個常用來處理程序的模組分別是subprocess和multiprocessing,其中subprocess通常用於執行外部程式,比如一些第三方應用程式,而不是Python程式。如果需要實現呼叫外部程式的功能,python的psutil模組是更好的選擇,它不僅支援subprocess提供

python 程序、執行緒 與非同步呼叫、回撥機制

程序池、執行緒池使用案例 程序池與執行緒池使用幾乎相同,只是呼叫模組不同~!! from concurrent.futures import ProcessPoolExecutor # 程序池模組 from concurrent.future