您的位置:首页 > 编程语言 > Python开发

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。

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就到这里,欢迎一起讨论。 :)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: