Python使用select实现异步通信1

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

# python:2.x

__author__ = ‘Administrator‘

#作用:等待输入或者输出通道已经准备就绪的通知

"""

允许访问特定的平台i/o监视函数,最可移植接口是POSIX函数select()

unix和windwods提示了这2个函数,这个模块可以实现异步通信,select模块包含了poll()和select(),select()原型是(rlist,wlist,xlist[,timeout])

rlist等待读取对象,wlist等待定稿对象,xlist等待异常对象,最后一个可选对象,指定等待时间,单位是s,select()方法返回值准备好的对象是三元组,若在timeout时间内,没有对象准备好,那么返回值是空的列表

"""

#select服务器

from socket import *

server=socket(AF_INET,SOCK_STREAM)

server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)#socket.setsockopt(level, optname, value)

#Set the value of the given socket option (see the Unix manual page setsockopt(2)).

# The needed symbolic constants are defined in the socket module (SO_* etc.). The value can be an integer or a string representing a buffer.

#  In the latter case it is up to

# the caller to ensure that the string contains the proper bits (see the optional built-in module

# struct for a way to encode C structures as strings).

server.bind((‘‘,10000))

inputs=[server]

from select import *

while True:

re1,ws,es=select(inputs,[],[])

for r in re1:

if r in server:

clientsock,clientaddr=r.accept()

inputs.append(clientsock)

else:

data=r.recv(1024)

if not data:

inputs.remove(r)

else:

print data

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

# python:2.x

__author__ = ‘Administrator‘

#客户端

from socket  import *

host=‘127.0.0.1‘

port=10000

s=socket(AF_INET,SOCK_STREAM)

s.connect((host,port))

s.send(‘hello world!‘)

s.close()

时间: 2024-10-21 11:50:09

Python使用select实现异步通信1的相关文章

Python使用select实现异步通信2

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' """ poll实现服务器时,需要用到register()和unregister()方法,作用是加入和移除对象,poll()的返回值包括文件描述和事件, 事件常量有POLLIN,POLLPRI,POLLPOUT,POLLERR,POLLHUP,POLLVAL,分别表示读取数据,读取紧急数据,文件描述符已经准备好,文件描述符出错,连接丢失,无效请求

python使用select和epoll实现IO多路复用实现并发服务器

在select模块中, 有三种方法实现IO多路复用并发服务器 select poll epoll select的原理: 在多路复用的模型中,比较常用的有select模型和epoll模型.这两个都是系统接口,由操作系统提供.当然,Python的select模块进行了更高级的封装. 网络通信被Unix系统抽象为文件的读写,通常是一个设备,由设备驱动程序提供,驱动可以知道自身的数据是否可用.支持阻塞操作的设备驱动通常会实现一组自身的等待队列,如读/写等待队列用于支持上层(用户层)所需的block或no

python subprocess select 读取

#!/usr/bin/env python # coding:utf-8 from __future__ import absolute_import, print_function import os import fcntl import select import subprocess from threading import Timer def make_nonblock(fd): flags = fcntl.fcntl(fd, fcntl.F_GETFL) fcntl.fcntl(f

Python Mysql Select Dict

Python Select Mysql 日期转换字符串 ,转换为字典 Python 读取出来的数据格式不是正规Json ,读取出来,直接是字典 Python 2.7 import MySQLdb from MySQLdb import converters as cov conv = cov.conversions.copy() conv[246] = float # convert decimals to floats conv[10] = str # convert dates to str

python的select服务端的代码和客户端的代码

服务端的代码 import socket import queue import select ip_bind = ("127.0.0.1",9000) message_queue = {} #保存客户端发送过来的信息,将消息放入到队列中 input_list = [] output_list = [] if __name__ == '__main__': server = socket.socket() server.bind(ip_bind) server.listen(10) s

selenium+Python之select定位

一.二次定位 基本思路,先定位select框,再定位select里的选项 二.通过Select模块定位 导入:from selenium.webdriver.support.select import Select 定位方法: select_by_index()  :通过索引定位select_by_value()  :通过value值定位select_by_visible_text() :通过文本值定位deselect_all()          :取消所有选项deselect_by_inde

python 异步 select pooll epoll

概念: 首先列一下,sellect.poll.epoll三者的区别 select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select()返回后,该数组中就绪的文件描述符便会被内核修改标志位,使得进程可以获得这些文件描述符从而进行后续的读写操作. select目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点,事实上从现在看来,这也是它所剩不多的优点之一. select的一个缺点在于单个进程能够监视的文件描述符的

python 简单搭建非阻塞式单进程,select模式,epoll模式服务

由于经常被抓取文章内容,在此附上博客文章网址:,偶尔会更新某些出错的数据或文字,建议到我博客地址 :  --> 点击这里 1 单进程服务器 - 非堵塞模式 服务端 : #coding=utf-8 from socket import * import time #用来存储所有的新连接的socket,这个是重点 g_socketList = [] def main(): serSocket = socket(AF_INET, SOCK_STREAM) serSocket.setsockopt(SO

Python网络编程篇之select和epoll

1. select 原理 在多路复?的模型中, ?较常?的有select模型和epoll模型. 这两个都是系统接?, 由操作系统提供. 当然, Python的select模块进?了更?级的封装. ?络通信被Unix系统抽象为?件的读写, 通常是?个设备, 由设备驱动程序提供, 驱动可以知道?身的数据是否可?. ?持阻塞操作的设备驱动通常会实现?组?身的等待队列, 如读/写等待队列?于?持上层(?户层)所需的block或non-block操作. 设备的?件的资源如果可?( 可读或者可写) 则会通知