threading in Python - 简单小例子
2016-06-18 16:57
543 查看
和其他语言一样,当你需要计算机同时处理多项任务的时候,就需要threading了。
threading在message program中比较常见,发送信息和接收信息就是最典型的例子,两者同时进行。
下面一个简单的例子可以展示我们threading的工作。
首先我们需要import threading, 新建一个继承threading.Thread的类。类里的def run() 是约定的python在threading时候的方法。
接着一个for循环,for _ in range(30) 这里的 ‘_’ 只是告诉循环需要循环30次,省去了变量,但是效果是一样的。 接下来我们打印输出目前的thread的名字。
新建两个对象,分别给两个不同的名字,一个是发送消息一个是接收消息。在这两个对象上作用function用start()方法,这也是默认的,意思是当启用start()后,就会去类里面寻找一个叫run()的function。
运行得到如下结果【不知道为什么CSDN图片上传不了了,就将运行结果以诡异的形式把前面十几行贴下面了】:
可以看到,我们先执行了x再执行了y,y的‘接收消息’并没有等到x的‘发送消息’全部结束后才开始执行。这边是threading用处。
threading可以帮我们更有效的处理,但也不是所有时候都要threading,比如在做计算的时候,我们还是by order来才对。
写这个小代码的时候碰到一些小问题,也不完全算问题,比如:
提示PEP 8 E302 expected 2 blank lines, found 1
这是提示在import module后要空两行,PEP 8 是写代码规范,以前还没有太注意过,惭愧。
(threading.Thread) AttributeError ‘threading’ has no attribute ‘Thread’
在网上搜了但是似乎没有和我完全一样的问题,后来才反应过来是不是因为文件名写成了threading.py, 意识到之后修改了文件名,果然这个error就不见了。唉还真是。
代码里有一个for _ in range(30), 其实不一定要30,其他数字也OK,只是电脑在写10的时候并没有体现出来同时处理的效果,可能是机器年纪大了原因吧。
简单的threading就到这里,欢迎一起讨论。 :)
threading在message program中比较常见,发送信息和接收信息就是最典型的例子,两者同时进行。
下面一个简单的例子可以展示我们threading的工作。
首先我们需要import threading, 新建一个继承threading.Thread的类。类里的def run() 是约定的python在threading时候的方法。
接着一个for循环,for _ in range(30) 这里的 ‘_’ 只是告诉循环需要循环30次,省去了变量,但是效果是一样的。 接下来我们打印输出目前的thread的名字。
新建两个对象,分别给两个不同的名字,一个是发送消息一个是接收消息。在这两个对象上作用function用start()方法,这也是默认的,意思是当启用start()后,就会去类里面寻找一个叫run()的function。
import threading class NaomiMessenger(threading.Thread): def run(self): for _ in range(30): print(threading.current_thread().getName()) x = NaomiMessenger(name = 'sending messages') y = NaomiMessenger(name = 'receiving messages') x.start() y.start()
运行得到如下结果【不知道为什么CSDN图片上传不了了,就将运行结果以诡异的形式把前面十几行贴下面了】:
"D:\Program Files\Python\Python3.6.0\python.exe" C:/Users/Naomi/PycharmProjects/untitled/tuna/test_threading.py sending messages sending messages sending messages sending messages sending messages sending messages sending messages sending messages receiving messages sending messages receiving messages sending messages receiving messages
可以看到,我们先执行了x再执行了y,y的‘接收消息’并没有等到x的‘发送消息’全部结束后才开始执行。这边是threading用处。
threading可以帮我们更有效的处理,但也不是所有时候都要threading,比如在做计算的时候,我们还是by order来才对。
写这个小代码的时候碰到一些小问题,也不完全算问题,比如:
提示PEP 8 E302 expected 2 blank lines, found 1
这是提示在import module后要空两行,PEP 8 是写代码规范,以前还没有太注意过,惭愧。
(threading.Thread) AttributeError ‘threading’ has no attribute ‘Thread’
在网上搜了但是似乎没有和我完全一样的问题,后来才反应过来是不是因为文件名写成了threading.py, 意识到之后修改了文件名,果然这个error就不见了。唉还真是。
代码里有一个for _ in range(30), 其实不一定要30,其他数字也OK,只是电脑在写10的时候并没有体现出来同时处理的效果,可能是机器年纪大了原因吧。
简单的threading就到这里,欢迎一起讨论。 :)
相关文章推荐
- 【leetCode】 Balanced Binary Tree python版实现
- python3 标准库 urllib.request
- 关于Python中函数默认参数的研究
- python笔记一_简单的基础
- python之流程控制语句
- 203. Remove Linked List Elements [easy] (Python)
- Python Collections Counter
- python 跨语言数据交互、json、pickle(序列化)、urllib、requests(爬虫模块)、XML。
- Python中找list中最大n个数的包heapq.nlargest
- 257. Binary Tree Paths [easy] (Python)
- 双色球 python
- 搞不懂 numpy.sum 请过来
- 记录
- python用openpyxl操作excel
- python用openpyxl操作excel
- 第四章 Python外壳:代码结构
- Python中使用装饰器来优化尾递归的示例
- sublime 3 注册码+PYTHON 环境配置+pylint插件path问题+package control找不到packages解决方法。
- 决策树
- 以图搜图(一):Python实现dHash算法(转)