threading in Python - 简单小例子

和其他语言一样,当你需要计算机同时处理多项任务的时候,就需要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来才对。

写这个小代码的时候碰到一些小问题,也不完全算问题,比如:

  1. 提示PEP 8 E302 expected 2 blank lines, found 1
    这是提示在import module后要空两行,PEP 8 是写代码规范,以前还没有太注意过,惭愧。
  2. (threading.Thread) AttributeError ‘threading’ has no attribute ‘Thread’
    在网上搜了但是似乎没有和我完全一样的问题,后来才反应过来是不是因为文件名写成了threading.py, 意识到之后修改了文件名,果然这个error就不见了。唉还真是。
  3. 代码里有一个for _ in range(30), 其实不一定要30,其他数字也OK,只是电脑在写10的时候并没有体现出来同时处理的效果,可能是机器年纪大了原因吧。

简单的threading就到这里,欢迎一起讨论。 :)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值