python 使用Python的多处理库在进程之间传递套接字的示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 使用Python的多处理库在进程之间传递套接字的示例相关的知识,希望对你有一定的参考价值。

'''pass_socket.py

Written September 14, 2012

Released into the public domain.

Works on Python 2.6, 2.7, and may need minor changes for 3+.
'''

import multiprocessing
from multiprocessing import reduction
import socket
import time

def worker(conn):
    time.sleep(.5)
    conn.poll(None)
    s = socket.fromfd(reduction.recv_handle(conn), socket.AF_INET, socket.SOCK_STREAM)
    s.sendall('GET /\r\n\r\n')
    d = s.recv(100)
    conn.send(d)
    s.close()

def main():
    parent, child = multiprocessing.Pipe()
    ch = multiprocessing.Process(target=worker, args=(child,))
    ch.start()
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(('www.google.com', 80))
    while not ch.pid:
        time.sleep(.25)
    reduction.send_handle(parent, s.fileno(), ch.pid)
    s.close()
    time.sleep(1)
    result = parent.recv()
    print result
    ch.join()

if __name__ == '__main__':
    main()

以上是关于python 使用Python的多处理库在进程之间传递套接字的示例的主要内容,如果未能解决你的问题,请参考以下文章

『Python』多进程处理

带有 RPYC 的多处理 Python “ValueError:酸洗已禁用”

python中的多处理[破池进程]

用python3的多进程和协程处理MySQL的数据

为啥 Python 的多处理模块在 Windows 上启动新进程时会导入 __main__?

Python - 多处理和共享内存