日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

python實現(xiàn)跨進程(跨py文件)通信示例_python

作者:JulyLi2019 ? 更新時間: 2022-05-03 編程語言

前言

項目中總會遇到數(shù)據(jù)需要跨進程通信的問題,今天就給大家?guī)硪惶缀唵蔚目邕M程通信代碼。代碼分為服務端與客戶端兩部分。

一、server端

import multiprocessing
import time

def do_socket(conn, addr, ):
    try:

        while True:
            if conn.poll(1) == False:
                time.sleep(0.5)
                continue
            data = conn.recv()  # 等待接受數(shù)據(jù)
            conn.send('sucess')
            # ***********************
            # 要執(zhí)行的程序?qū)懺谶@里
            # ***********************
            print(data)

    except Exception as e:
        print('Socket Error', e)

    finally:
        try:
            conn.close()
            print('Connection close.', addr)
        except:
            print('close except')


def run_server(host, port):
    from multiprocessing.connection import Listener
    server_sock = Listener((host, port))

    print("Sever running...", host, port)

    pool = multiprocessing.Pool(10)
    while True:
        # 接受一個新連接:

        conn = server_sock.accept()
        addr = server_sock.last_accepted
        print('Accept new connection', addr)

        # 創(chuàng)建進程來處理TCP連接:
        pool.apply_async(func=do_socket, args=(conn, addr,))


if __name__ == '__main__':
    server_host = '127.0.0.1'
    server_port = 8000
    run_server(server_host, server_port)

二、client端

import time

from multiprocessing.connection import Client

client = Client(('127.0.0.1', 8000))

while True:
    data = 'send data'
    client.send(data)
    data = client.recv()  # 等待接受數(shù)據(jù)
    print(data)
    time.sleep(1)

這里只是給了client端的示例代碼,實際通信的數(shù)據(jù)類型可以是多樣的(字符串、數(shù)字、圖片等)

三、運行效果

先運行server端,再運行client端。

server

在這里插入圖片描述

client

在這里插入圖片描述

總結

本文簡單給大家提供了一套簡單封裝的跨進程通信代碼,方便大家快速上手實現(xiàn)跨進程通信,有需要的伙伴可以根據(jù)自己的需求調(diào)整代碼。

原文鏈接:https://blog.csdn.net/JulyLi2019/article/details/123198985

欄目分類
最近更新