关于python方法无法在线程中使用的解决办法


当前第2页 返回上一页

  为什么RequestHandler中post或者get请求被认为是一个后台的线程方法?这个问题从使用tornado的代码中可以窥得一二。代码如下:


1

2

3

4

5

6

7

8

if __name__ == '__main__':

    app = tornado.web.Application(

        handlers=[(r"/test/(\w+)", testHandler),

                  (r'/', MainHandler)]

    )

    server = tornado.httpserver.HTTPServer(app)

    server = server.listen(8848)

    tornado.ioloop.IOLoop.instance().start();

  在给tornado配置了路由规则之后,我们开启了httpserver的服务,最后创建进程来使tornado运行起来。而每次的post或者get请求则是通过路由调用相应的Handler,这些都是在线程中执行的。故案例中通过com组件WMI来获取系统流量放在get方法中就会报错。修改后如下:


1

2

3

4

5

6

7

8

9

10

def get(self):

    res = {}        pythoncom.CoInitialize()

    c = wmi.WMI()

    interfaces = c.Win32_PerfRawData_Tcpip_NetworkInterface()        print len(interfaces)

    rec = send = 0.0        for t in interfaces:            print t.Name

        rec += float(t.BytesReceivedPersec) / 1024 / 1024

        send += float(t.BytesSentPersec) / 1024 / 1024        print rec, send

    res["receive"] = "%.2f" % rec

    res["send"] = "%.2f" % send      

    self._write_json(res)

 模块中很有很多类型(类型也有很多属性),在具体使用的过程中查询起来很痛苦。案例中的统计流量用的是Win32_PerfRawData_Tcpip_NetworkInterface ,也有解决方案用的是Win32_PerfRawData_Tcpip_TCPv4 两个统计到的数据差别很大,请根据实际情况来选择。

以上就是关于python方法无法在线程中使用的解决办法的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

Python中paramiko模块实现远程控制以及传输的示例

Python编程需要什么软件

Python遍历文件夹下所有文件

Python螺旋线怎么画

传授 每30秒学会一个Python小技巧

Python实现删除时保留特定文件夹和文件的示例

Python图形界面开发用什么

Python操作mysql代码总结

介绍Python爬取哔哩哔哩视频

Python怎么打开

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...