欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python進程間通信之命名管道

 更新時間:2017年08月28日 16:17:58   作者:kongxx  
本篇文章主要介紹了詳解Python進程間通信之命名管道,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

管道是一種簡單的FIFO通信信道,它是單向通信的。 通常啟動進程創(chuàng)建一個管道,然后這個進程創(chuàng)建一個或者多個進程子進程接受管道信息,由于管道是單向通信,所以經(jīng)常需要創(chuàng)建兩個管道來實現(xiàn)雙向通信。

命名管道是對傳統(tǒng)管道的擴展,默認的管道是匿名管道,只在程序運行時存在;而命名管道是持久化的,當(dāng)不需要時需要刪除它。

命名管道使用文件系統(tǒng),由mkfifo()方法創(chuàng)建。一旦創(chuàng)建了,兩個獨立的進程都可以訪問它,一個讀,另外一個寫。

命名管道支持阻塞讀和阻塞寫操作: 如果一個進程打開文件讀,它會阻塞直到另外一個進程寫。 但是我們可以指定O_NONBLOCK選項來啟用非阻塞模式。

命名管道必須以只讀或者只寫的模式打開,它不能以讀+寫的模式打開,因為它時單向通信。如果要實現(xiàn)雙向通信,必須打開兩個命名管道。

下面是一個 Python 使用命名管道來實現(xiàn)進程間通信的例子

Server 端

import os, time

read_path = "/tmp/pipe.in"
write_path = "/tmp/pipe.out"

if os.path.exists(read_path):
  os.remove(read_path)
if os.path.exists(write_path):
  os.remove(write_path)

os.mkfifo(write_path)
os.mkfifo(read_path)

rf = os.open(read_path, os.O_RDONLY)
wf = os.open(write_path, os.O_SYNC | os.O_CREAT | os.O_RDWR)

while True:
  s = os.read(rf, 1024)
  print "received msg: %s" % s
  if len(s) == 0:
    time.sleep(1)
    continue

  if "exit" in s:
    break

  os.write(wf, s)

os.close(rf)
os.close(wf)

Client 端

import os
import time

write_path = "/tmp/pipe.in"
read_path = "/tmp/pipe.out"

wf = os.open(write_path, os.O_SYNC | os.O_CREAT | os.O_RDWR)
rf = None

for i in range(1, 11):
  msg = "msg " + str(i)
  len_send = os.write(wf, msg)
  print "sent msg: %s" % msg

  if rf is None:
    rf = os.open(read_path, os.O_RDONLY)

  s = os.read(rf, 1024)
  if len(s) == 0:
    break
  print "received msg: %s" % s

  time.sleep(1)

os.write(wf, 'exit')

os.close(rf)
os.close(wf)


測試

  • 首先運行server.py
  • 然后運行client.py

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • numpy.reshape()的函數(shù)的具體使用

    numpy.reshape()的函數(shù)的具體使用

    本文主要介紹了numpy.reshape()的函數(shù)的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python?AutoViz庫一行代碼實現(xiàn)可視化數(shù)據(jù)集

    python?AutoViz庫一行代碼實現(xiàn)可視化數(shù)據(jù)集

    這篇文章主要介紹了python?AutoViz庫一行代碼實現(xiàn)可視化數(shù)據(jù)集實例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Python?OpenCV實現(xiàn)人物動漫化效果

    Python?OpenCV實現(xiàn)人物動漫化效果

    這篇文章主要介紹了利用Python和OpenCV實現(xiàn)人物的動漫化特效,文中的示例代碼講解詳細,對我們學(xué)習(xí)Python和OpenCV有一定的幫助,需要的可以了解一下
    2022-01-01
  • QML用PathView實現(xiàn)輪播圖

    QML用PathView實現(xiàn)輪播圖

    這篇文章主要為大家詳細介紹了QML用PathView實現(xiàn)輪播圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • python動態(tài)規(guī)劃算法實例詳解

    python動態(tài)規(guī)劃算法實例詳解

    在本篇文章里小編給大家整理了關(guān)于python動態(tài)規(guī)劃算法實例內(nèi)容,有需要的朋友們可以參考學(xué)習(xí)下。
    2020-11-11
  • 關(guān)于Python如何安裝requests庫

    關(guān)于Python如何安裝requests庫

    這篇文章主要介紹了關(guān)于Python如何安裝requests庫,requests庫自稱“HTTP for Humans”,直譯過來的意思是專門為人類設(shè)計的HTTP庫,能夠被開發(fā)人員安全地使用,需要的朋友可以參考下
    2023-04-04
  • Python NumPy數(shù)組利器之np.zeros函數(shù)詳解與應(yīng)用實例

    Python NumPy數(shù)組利器之np.zeros函數(shù)詳解與應(yīng)用實例

    在Python的科學(xué)計算庫NumPy中,numpy.zeros()是一個非常重要的函數(shù),它用于創(chuàng)建一個指定形狀和數(shù)據(jù)類型的全零數(shù)組,這篇文章主要給大家介紹了關(guān)于Python NumPy數(shù)組利器之np.zeros函數(shù)詳解與應(yīng)用實例的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • pandas中數(shù)據(jù)的排序與排名的具體使用

    pandas中數(shù)據(jù)的排序與排名的具體使用

    Pandas對數(shù)據(jù)進行排序和排名是非常常見的操作,本文主要介紹了pandas中數(shù)據(jù)的排序與排名的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • python中prettytable庫的使用方法

    python中prettytable庫的使用方法

    prettytable是Python的一個第三方工具庫,用于創(chuàng)建漂亮的ASCII表格,本文主要介紹了python中prettytable庫的使用方法,使用prettytable可以輕松地將數(shù)據(jù)可視化為表格,感興趣的可以了解一下
    2023-08-08
  • python實現(xiàn)精準(zhǔn)搜索并提取網(wǎng)頁核心內(nèi)容

    python實現(xiàn)精準(zhǔn)搜索并提取網(wǎng)頁核心內(nèi)容

    這篇文章主要為大家介紹了python實現(xiàn)精準(zhǔn)搜索并提取網(wǎng)頁核心內(nèi)容的實現(xiàn),有需要的的朋友可以借鑒參考下,希望能有所幫助祝大家多多進步
    2021-11-11

最新評論