国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python高并發異步服務器核心庫forkcore使用方法

2019-11-25 18:37:05
字體:
來源:轉載
供稿:網友

1 拷貝下面的代碼到一個文件,并命名為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 編寫自己的代碼

1> 導入forkcore庫。

2> 定義worker函數,worker函數需要兩個參數,conn代表客戶端連接的socket,addr是(ip,port)的元組。

3> 直接使用forkcore.ds_forecore(worker,port=5555)即可,port用于指定監聽端口。

復制代碼 代碼如下:

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以上的內核

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 麻阳| 龙州县| 新巴尔虎右旗| 临泽县| 安图县| 赫章县| 巴中市| 灌云县| 南雄市| 禄丰县| 宜君县| 宁武县| 荔波县| 伊宁县| 台中县| 岗巴县| 汶川县| 涿鹿县| 大理市| 夏津县| 维西| 当阳市| 弋阳县| 手游| 开封县| 万州区| 吴堡县| 定安县| 宁津县| 法库县| 中卫市| 白沙| 海阳市| 化隆| 新昌县| 汉沽区| 桐城市| 随州市| 霍山县| 宣恩县| 霍山县|