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.pswp.cn/news/528876.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/528876.shtml
英文地址,請注明出處:http://en.pswp.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…