python高并發(fā)異步服務(wù)器核心庫(kù)forkcore使用方法
1 拷貝下面的代碼到一個(gè)文件,并命名為forkcore.py
import os
import threading
import select
import socket
class ds_forkcore(object):
#async IO(epoll)
def ds_epoll(self):
epoll=select.epoll()
epoll.register(self.s.fileno(),select.EPOLLIN|select.EPOLLET)
while 1:
epoll_list=epoll.poll()
for fd,_events in epoll_list:
if fd==self.s.fileno():
conn,addr=self.s.accept()
print "Current process's pid is "+str(os.getpid())
self.worker(conn,addr)
#multi_thread
def ds_thread(self,thread_num=100):
for _ in range(0,thread_num):
t=threading.Thread(target=self.ds_epoll)
t.setDaemon(1)
t.start()
t.join()
#multi_process
def ds_process(self,child_process_num=8):
pid=os.getpid()
print "Main process start, pid is "+str(pid)
for _ in range(0,child_process_num):
if pid==os.getpid():
if os.fork():
pass
else:
print "Worker process start, pid is "+str(os.getpid())
self.ds_thread()
#init function
def __init__(self,worker,port=3333):
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.bind(("",port))
s.listen(50000)
self.s=s
self.worker=worker
self.ds_process()
2 編寫(xiě)自己的代碼
1> 導(dǎo)入forkcore庫(kù)。
2> 定義worker函數(shù),worker函數(shù)需要兩個(gè)參數(shù),conn代表客戶(hù)端連接的socket,addr是(ip,port)的元組。
3> 直接使用forkcore.ds_forecore(worker,port=5555)即可,port用于指定監(jiān)聽(tīng)端口。
import forkcore
if __name__=="__main__":
def worker(conn,addr):
print "Message from ("+str(addr[0])+":"+str(addr[1])+"): "+conn.recv(1024)[0:-1]
forkcore.ds_forkcore(worker,port=5555)
注:需要linux 2.6以上的內(nèi)核
- python aiohttp的使用詳解
- Python中利用aiohttp制作異步爬蟲(chóng)及簡(jiǎn)單應(yīng)用
- Python中asyncio與aiohttp入門(mén)教程
- 詳解python異步編程之a(chǎn)syncio(百萬(wàn)并發(fā))
- Python多進(jìn)程并發(fā)(multiprocessing)用法實(shí)例詳解
- Python控制多進(jìn)程與多線(xiàn)程并發(fā)數(shù)總結(jié)
- 詳解python并發(fā)獲取snmp信息及性能測(cè)試
- python實(shí)現(xiàn)多線(xiàn)程的方式及多條命令并發(fā)執(zhí)行
- python實(shí)現(xiàn)可以斷點(diǎn)續(xù)傳和并發(fā)的ftp程序
- python并發(fā)編程之多進(jìn)程、多線(xiàn)程、異步和協(xié)程詳解
- Python實(shí)現(xiàn)多并發(fā)訪(fǎng)問(wèn)網(wǎng)站功能示例
- Python aiohttp百萬(wàn)并發(fā)極限測(cè)試實(shí)例分析
相關(guān)文章
uwsgi啟動(dòng)django項(xiàng)目的實(shí)現(xiàn)步驟
本文主要介紹了uwsgi啟動(dòng)django項(xiàng)目的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08為什么選擇python編程語(yǔ)言入門(mén)黑客攻防 給你幾個(gè)理由!
為什么選擇python編程語(yǔ)言入門(mén)黑客攻防,小編今天給你幾個(gè)理由!Python語(yǔ)言的優(yōu)點(diǎn)、Python黑客攻擊優(yōu)點(diǎn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02淺談Tensorflow2對(duì)GPU內(nèi)存的分配策略
本文主要介紹了Tensorflow2對(duì)GPU內(nèi)存的分配策略,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08Python使用matplotlib模塊繪制圖像并設(shè)置標(biāo)題與坐標(biāo)軸等信息示例
這篇文章主要介紹了Python使用matplotlib模塊繪制圖像并設(shè)置標(biāo)題與坐標(biāo)軸等信息,結(jié)合實(shí)例形式分析了Python中matplotlib模塊進(jìn)行坐標(biāo)系圖形繪制的相關(guān)操作技巧,需要的朋友可以參考下2018-05-05python ansible自動(dòng)化運(yùn)維工具執(zhí)行流程
ansible是基于 paramiko 開(kāi)發(fā)的,并且基于模塊化工作,本身沒(méi)有批量部署的能力,接下來(lái)通過(guò)本文給大家分享python ansible自動(dòng)化運(yùn)維工具的特點(diǎn)及執(zhí)行流程,感興趣的朋友跟隨小編一起看看吧2021-06-06