我有一个很长的过程,大约需要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失败
如何解决这个问题?