在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  Python/ tornado的多進程模式如何實現(xiàn)共享同一個ioloop?

tornado的多進程模式如何實現(xiàn)共享同一個ioloop?

啟動方式大概如下

app = tornado.web.Application(router.url_map, **settings)
server = tornado.httpserver.HTTPServer(app)
server.bind(options.port)
server.start(10)
tornado.ioloop.IOLoop.instance().start()

這里啟動了10個子進程去并行,每個進程的資源是隔離的, 實際測試中發(fā)現(xiàn)不同進程打印出來的ioloop實例地址一樣的

在代碼中也沒看見有進程中的共享內(nèi)存等操作, 所以想問是怎么實現(xiàn)共享同一個ioloop的?

回答
編輯回答
短嘆

實際測試中發(fā)現(xiàn)不同進程打印出來的ioloop實例地址一樣的

應(yīng)該是你測試有問題。把代碼粘出來?;蛘?,你先自己確認一下,是不是真的“不同進程”。

2017年12月24日 07:06
編輯回答
安若晴

請問這個問題找到原因了嗎?我也碰到了,但是在源碼里沒找出來原因。

環(huán)境 tornado-5.0.2 python-3.6.5 系統(tǒng):Linux-3.10.0-693.el7.x86_64

測試代碼:

import tornado.web
import tornado.ioloop
import tornado.httpserver
import os
import time
app = tornado.web.Application(debug=False)
http_server = tornado.httpserver.HTTPServer(app)
http_server.bind(9000, 'localhost')
print("main pid: %d" % os.getpid())
http_server.start(num_processes=0)
ioloop = tornado.ioloop.IOLoop.current()
ioloop.mytask = os.getpid()
print("pid:  %d, ioloop_instance: %d" % (os.getpid(), id(ioloop)))
tornado.ioloop.IOLoop.current().start()

執(zhí)行結(jié)果
圖片描述

2018年4月29日 03:33
編輯回答
萌吟
sockets = tornado.netutil.bind_sockets(8888)
tornado.process.fork_processes(0)
server = HTTPServer(app)
server.add_sockets(sockets)
IOLoop.current().start()
2018年8月15日 23:04