最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

命名管道是對傳統(tǒng)管道的擴展,默認(rèn)的管道是匿名管道,只在程序運行時存在;而命名管道是持久化的,當(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)文章

  • Opencv實現(xiàn)計算兩條直線或線段角度方法詳解

    Opencv實現(xiàn)計算兩條直線或線段角度方法詳解

    這篇文章主要介紹了Opencv實現(xiàn)計算兩條直線或線段角度方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12
  • 在Docker上開始部署Python應(yīng)用的教程

    在Docker上開始部署Python應(yīng)用的教程

    這篇文章主要介紹了在Docker上開始部署Python應(yīng)用的教程,Docker是時下最火爆的虛擬機,正在被各大云主機服務(wù)商所采用,需要的朋友可以參考下
    2015-04-04
  • python3.6實現(xiàn)學(xué)生信息管理系統(tǒng)

    python3.6實現(xiàn)學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python3.6實現(xiàn)學(xué)生信息管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • 使用Python寫CUDA程序的方法

    使用Python寫CUDA程序的方法

    下面小編就為大家?guī)硪黄褂肞ython寫CUDA程序的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • flask數(shù)據(jù)庫序列化操作實例探究

    flask數(shù)據(jù)庫序列化操作實例探究

    這篇文章主要為大家介紹了flask數(shù)據(jù)庫序列化操作實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Python DataFrame使用drop_duplicates()函數(shù)去重(保留重復(fù)值,取重復(fù)值)

    Python DataFrame使用drop_duplicates()函數(shù)去重(保留重復(fù)值,取重復(fù)值)

    這篇文章主要介紹了Python DataFrame使用drop_duplicates()函數(shù)去重(保留重復(fù)值,取重復(fù)值),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 基于Python實現(xiàn)對PDF文件的OCR識別

    基于Python實現(xiàn)對PDF文件的OCR識別

    大家可能聽說過使用Python進行OCR識別操作。在Python中,最出名的庫便是Google所資助的tesseract。利用tesseract可以很輕松地對圖像進行識別?,F(xiàn)在問題來了,如果想對一個PDF文檔進行OCR識別,該怎么做呢?下面一起來看看。
    2016-08-08
  • flask入門之表單的實現(xiàn)

    flask入門之表單的實現(xiàn)

    這篇文章主要介紹了flask入門之表單的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • python之文件讀取一行一行的方法

    python之文件讀取一行一行的方法

    今天小編就為大家分享一篇python之文件讀取一行一行的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python wav模塊獲取采樣率 采樣點聲道量化位數(shù)(實例代碼)

    python wav模塊獲取采樣率 采樣點聲道量化位數(shù)(實例代碼)

    這篇文章主要介紹了python wav模塊獲取采樣率 采樣點聲道量化位數(shù),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01

最新評論

罗江县| 黎平县| 绍兴市| 柘城县| 太和县| 东莞市| 汾阳市| 奉化市| 会昌县| 冷水江市| 彩票| 黑龙江省| 临朐县| 宜州市| 庆元县| 山西省| 石首市| 罗城| 定边县| 乐陵市| 万盛区| 思茅市| 瑞金市| 福安市| 安化县| 驻马店市| 独山县| 五河县| 金沙县| 乐亭县| 平谷区| 陈巴尔虎旗| 兰坪| 固镇县| 金堂县| 上高县| 岳普湖县| 阿拉善左旗| 邯郸市| 高清| 泗洪县|