将长流程拆分为Tornado框架中的多个流程

时间:2017-05-09 10:22:34

标签: python multithreading multiprocessing tornado

我有一个很长的过程,大约需要300秒才能完成。我在龙卷风框架中使用套接字编程来执行此操作。现在我正在尝试使用多处理来提高速度。

为此,我将app.py更改为类似的内容。

global http_server
http_server = tornado.httpserver.HTTPServer(app)

# Commented the previous code.
# http_server.listen(port)
# signal.signal(signal.SIGTERM, sig_handler)
# signal.signal(signal.SIGINT, sig_handler)
# tornado.ioloop.IOLoop.instance().start()

http_server.bind(port)
http_server.start(0)
tornado.ioloop.IOLoop.instance().start()

现在,在其中一个请求处理程序中,我编写了下面的代码并且它给出了一个错误。但是,当我在没有Tornado的情况下尝试将其作为核心python脚本时,相同的代码已经有效。

from multiprocessing import Pool
pool = Pool(processes=4)
m = 10000000
print "map with multiproc: "
t = time.time()
r = pool.map(my_func, range(m))

错误说

  

PicklingError:无法pickle:属性查找thread.lock失败

如何解决这个问题?

0 个答案:

没有答案