Python學習之多程序例項

2021-08-08 11:05:30 字數 2063 閱讀 9163

第一部分:任務分發端

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# @time : 17/9/17 上午10:49

# @author : mylovin

# @file : multiprocess_server.py

# @software: pycharm

# @說明 : 多程序例項----分發任務端

#匯入必備標頭檔案;

import multiprocessing

from multiprocessing.managers import basemanager

import queue#注意:python2.7中,queue是大寫;但是python3中是小寫!

#繼承basemanager類

class

queuemanager

(basemanager):

pass

#建立任務佇列和結果佇列

get_task_queue = queue.queue()

get_result_queue = queue.queue()

#在網路上註冊

queuemanager.register("get_task_queue", callable=lambda :get_task_queue)

queuemanager.register("get_result_queue", callable=lambda :get_result_queue)

#建立多程序管理員,需要指定位址和埠,用於主從之間連線,同時需要驗證碼進行驗證

manager = queuemanager(address=("127.0.0.1", 5000), authkey=b"multiprocessing")

#啟動manager.start()

#獲取任務佇列和結果佇列

task = manager.get_task_queue()

result = manager.get_result_queue()

for i in range(10):

task.put(i)

for i in range(10):

v = result.get(timeout=5)

print(v)

#結束manager.shutdown()

第二部分:任務處理端

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# @time : 17/9/17 上午10:49

# @author : mylovin

# @file : multiprocess_worker.py

# @software: pycharm

# @說明 : 多程序例項----執行任務端

import multiprocessing

import queue

from multiprocessing.managers import basemanager

class

queuemanager

(basemanager):

pass

queuemanager.register("get_task_queue")

queuemanager.register("get_result_queue")

manager = queuemanager(address=("127.0.0.1", 5000), authkey=b"multiprocessing")

manager.connect()

task = manager.get_task_queue()

result = manager.get_result_queue()

for i in range(10):

value = task.get(timeout=2)

result.put(value*value)

python學習之多程序

在介紹多程序之前,首先介紹下作業系統獲取關於程序中的一些資訊 方法描述 os.getpid 獲取當前程序的pid os.getppid 獲取當前程序的父程序的pid 在python中,我們一般都是通過引入multiprocessing模組來實現多程序程式設計,multiprocessing模組提供了...

python之多程序

要讓python實現多程序 multiprocessing 我們先來了解作業系統相關知識。unix 和 linux 作業系統提供了乙個 fork 函式系統呼叫,它非常特殊。普通的函式,呼叫一它次,執行一次,但是 fork 函式呼叫一次執行兩次,因為作業系統自動把當前程序 稱為父程序 複製了乙份 稱為...

python學習筆記之多程序

我們現代的作業系統,都是支援 多工 的作業系統,對於操程式設計客棧作系統來說,乙個任務就是乙個程序 process 比如開啟乙個瀏覽器就是啟動乙個瀏覽器程序。如果我們將計算器的核心cpu比喻為一座工廠,那麼程序就像工廠裡的車間,它代表cpu所能處理的單個任務。任一時刻,cpu總是執行乙個程序,其他程...