python多进程传递参数_急急急, Python 多进程,如何传递 epoll?

10

2019-06-16 15:39:41 +08:00

@NoAnyLove 好的好的,我查了下,说 IPC 或向 worker 参数传递的东西必须要能 pickle,不然就报错,那就是 select.epoll 是不支持的。error:TypeError: can't pickle select.epoll objects。

代码大致如下:

def listenProcess(serverSocket):

process_num = 2*cpu_count()

# 设置进程池、消息队列

po = Pool(process_num)

q = Manager().Queue() #ipc 方法 1

m=Manager() # ipc 方法 2

epoll_fd = select.epoll()

epoll_fd.register(serverSocket.fileno(), select.EPOLLIN)

# 保存中间数据

connections = {}

addresses = {}

while True:

epoll_list = epoll_fd.poll()

for fd, events in epoll_list:

print("fd is:%s events is%s"%(fd,events))

if fd == serverSocket.fileno():

conn, addr = serverSocket.accept()

conn.setblocking(False)

epoll_fd.register(conn.fileno(), select.EPOLLIN | select.EPOLLET )

connections[conn.fileno()] = conn

addresses[conn.fileno()] = addr

elif events & select.EPOLLIN:

# q.put(connections[fd])

po.apply_async(workProcess4In,args=(connections[fd],epoll_fd,))

elif events & select.EPOLLOUT:

# q.put(fd)

# d=m.dict({"epollfd":epoll_fd,"fd":fd})

po.apply_async(workProcess4Out,(connections[fd,epoll_fd],))

po.close()

po.join()

def workProcess4In(conn,epollfd):

#print("epoll is:%s"%epollfd)

#执行读操作,遇到 eagain 就 modify 状态 out

epollfd.modify(conn.fileno(), select.EPOLLET | select.EPOLLOUT)

执行结果:不执行 workProcess4In,如果把 epoll_fd 换成其他,则没问题

请教 dalao,主进程需要如何才能把 epoll_fd 传过去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux查看一小时之内的日志,linux – 在[timespan]内(例如最后一小时)查找日志文件中的条目...

我的服务器CPU使用率不高,我可以看到Apache正在使用太多的内存。我有一种感觉,我正在用一个IP进行DOS.-也许你可以帮我找到他?我已经使用以下行找到10个最“活跃”的IP:cat access.log | awk {print $1} |sort |uniq -c |sort -n …

图像语义分割_图像语义分割(9)-DeepLabV3: 再次思考用于图像语义分割的空洞卷积...

论文地址 :Rethinking Atrous Convolution for Semantic Image Segmentation论文代码:Github链接1. 摘要文章主要的工作:使用空洞卷积来调整滤波器的感受野并控制特征图分辨率使用不同空洞率的空洞卷积的串联或者并行操作来分割不同尺度的目标…

linux系统列表,Linux常用系统调用列表-20210415054405.docx-原创力文档

LinuxLinux常用系统调用列表作者:雷震 2002年3月本文列出了大部分常见的Linux系统调用,并附有简要中文说明。以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派 生出的的函数。按照惯例,这个列表以man pages…

sql replace 双引号变单引号_sql-汇总、排序以及分析思路

一、汇总函数注:汇总函数,如果输入是列名,计算会把null 排除在外,count(*)对所有的行进行计数二、如何用sql解决业务问题注1:空值(null)的排序,排序是最小的,例如select * from tea order by tea_name注2&a…

linux subversion 根目录检出,经验总结:详解Linux下Subversion的安装配置记录 下

上节介绍额Linux下Subversion的安装问题,本节介绍Linux下Subversion配置问题,你可以和Windows下Subversion的安装配置做一个对比,你就会发现在这两种操作系统中Subversion的不同运行机制。第二章配置本系统采用为每个项目单独建一版本库的策略…

python用户名密码登录退出_用户登录登出

一、功能需求分析1.登录功能分析1.1登录流程1.2功能(一个请求为一个功能)~登录页面~登录功能~登出功能二、登录页面1.接口设计1.1.接口说明类目                  说明请求方式                GETurl定义…

openwrt是嵌入式linux,非常方便的OpenWrt的嵌入式Linux开发环境

今天听中央经济广播电台说,今年有559万大学毕业生,大学生的就业形式严峻.我想那些精通Linux开发的毕业大学生们,估计一点也不用担心,因为他们已经不再是一颗大白菜了.最近在帮一个朋友把OpenWrt移植到一块单板上,有一些心得,分享给大家.OpenWrt是一个很好的学习Linux的平台,而且…

linux添加有效群组,Linux中的有效群组和初始群组

在Linux中,每个账号都可以加入多个群组,那用户登录后默认的用的是哪个群组呢?关于这个问题就要说说有效群组和初始群组了。在用户账号信息文件/etc/passwd中,那个由冒号分割的7个栏目中,第四个栏目是群组ID(GID)&#…

php多个表中查找数据_HeidiSQL 免费的可视化数据库管理工具

HeidiSQL是一款免费的软件,并且易于学习和使用。HeidiSQL让你从数据库内可视化的读写数据、结构体。它支持MariaDB、MySQL、Microsoft SQL、PostgreSQL等数据库。功能免费且开源内置中文在同个窗口连接多个服务支持以命令行形式连接服务连接支持SSH、SSL创建修改表、…

嵌入式linux启动根文件系统,嵌入式Linux根文件系统制作和挂载

嵌入式Linux系统由三部分组成: uboot、kernel、根文件系统, 还是这张老图这里的根文件系统可以说是包含两个部分: 一个是根,一个是文件系统那么什么是根呢?哈哈 其实根表示的就是第一个的意思下面贴张图看看整个根文件…

sqlite 查询 支持多用户同时_SQLite支持多进程同时操作数据库文件吗?

多个进程可以同时打开同一个数据库。多个进程可以同时执行SELECT。但是,只有一个进程可以随时对数据库进行更改。SQLite使用读/写锁来控制对数据库的访问。(在Win95 / 98 / ME下,缺少对读写锁的支持,而是使用概率模拟。)但请注意:…

python 字符串处理 字典_python 字符串和字典

一、字符串操作name "my name is \t {name} and i am {year} years old"1.首字母大写print(name.capitalize())2.统计字符串中相同的字符print(name.count("n"))3.格式化字符串print(name.center(50,"-"))#打印50个-,把name的值放中…

查询linux上调度命令,浅析Linux中crontab任务调度

一.创建调度任务指令crontab -e 进入当前用户编辑界面crontab -u 用户名 -e 进入指定用户编辑界面进入crontab任务编辑界面任务编写格式#每分钟执行查看一次/ect目录,把目录内容写进/tml/a.txt下*/ 1 * * * * ll /etc >> /tmp/a.text#crontab对象 指令#多个任务同时执行#…

pgsql 查询每天的最后一条_Qamp;A | 如何允许他人查询表单数据?

小金Q&A来啦!这一期小金Q&A中,小金收集到近期大家关注最多的几个问题。小金将定期为小金人们答疑解惑,帮助你每天用好小金一点。●Q&A●问:如何批量设置新数据微信提醒?答:点击右上角头像 个人…

pythonjson构建二维数组_python后台获取ajax传递的二维数组,保持原有数据结构不变...

python后台获取ajax传递的二维数组,保持原有数据结构不变。前台主要程序:arr_data [[1,2,3],[4,5,6]];//创建二维数组var json_data JSON.stringify(arr_data);//将二维数组转换为json格式//ajax将json_data传入后台$.ajax({url : "/path",d…

linux多线程访问共享资源,多个线程访问共享对象和数据

多个线程访问共享对象和数据有很多方式,但是可以分为两大类:1.多线程执行代码相同的。2.多线程执行代码不同的对于多线程执行代码相同的情况来说:1)使用同一个Runnable对象,在new Thread的时候放入相同的这个对象public static vo…

linux关闭交互模式,linux – 关闭cp(copy)命令的交互模式(cp:overwrite?)

推荐文章更新源的方法提前保存一下原来源 sudo cp sources.list sources.list.bak 换源命令: sudo gedit /etc/apt/sources.list 或者 sudo vim /etc/apt/sources.list 或者 sudo vim /etc/apt/sources.list推荐文章1 删除内容gg 顶部G 底部:set nu 显示行号:10,.d …

sql截去最后一位_SqlServer从左边 最后 中间截取字符串

SqlServer从左边 最后 中间截取字符串(摘录)2009-06-01 15:04已知: 字段AF:\photo\Winter Leaves.jpg要求:分段截取每段字符[字段A不能为TEXT类型,否则报错]解决方法:---截取字符串A的第一个\左边的字符串select left(A,charindex(/,A)-1) MEMO:charindex(\,A)-1 -在字符…

linux 解压tar.jz,linux系统压缩文件和解压缩命令

linux系统压缩文件和解压缩命令tar命令   解包:tar zxvf FileName.tar打包:tar czvf FileName.tar DirName gz命令   解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName.tar.gz 和 .tgz解压&a…

linux redis-4.0,Linux Redis 4.0.2 安装部署

Linux Redis 4.0.2 安装部署01 安装GCCyum -y install gcc gcc-c libstdc-devel tcl -y02 下载安装包cd /export/software/wget http://219.238.7.71/files/403400000ABE0C0C/download.redis.io/releases/redis-4.0.2.tar.gztar -zxvf redis-4.0.2.tar.gz -C ../serverscd /exp…