温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python线程有哪些创建方式

发布时间:2021-07-12 10:35:15 来源:亿速云 阅读:102 作者:小新 栏目:开发技术

这篇文章主要为大家展示了“python线程有哪些创建方式”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python线程有哪些创建方式”这篇文章吧。

Python3 线程中常用的两个模块为:

  • _thread

  • threading(推荐使用)

使用Thread类创建

import threading from time import sleep,ctime def sing():   for i in range(3):     print("正在唱歌...%d"%i)     sleep(1) def dance():   for i in range(3):     print("正在跳舞...%d"%i)     sleep(1) if __name__ == '__main__':   print('---开始---:%s'%ctime())   t1 = threading.Thread(target=sing)   t2 = threading.Thread(target=dance)   t1.start()   t2.start()   #sleep(5) # 屏蔽此行代码,试试看,程序是否会立马结束?   print('---结束---:%s'%ctime()) """ 输出结果: ---开始---:Sat Aug 24 08:44:21 2019 正在唱歌...0 正在跳舞...0---结束---:Sat Aug 24 08:44:21 2019 正在唱歌...1 正在跳舞...1 正在唱歌...2 正在跳舞...2 """

说明:主线程会等待所有的子线程结束后才结束

使用Thread子类创建

为了让每个线程的封装性更完美,所以使用threading模块时,往往会定义一个新的子类class,只要继承threading.Thread就可以了,然后重写run方法。

import threading import time class MyThread(threading.Thread):   def run(self):     for i in range(3):       time.sleep(1)       msg = "I'm "+self.name+' @ '+str(i) #name属性中保存的是当前线程的名字       print(msg) if __name__ == '__main__':   t = MyThread()   t.start() """ 输出结果: I'm Thread-5 @ 0 I'm Thread-5 @ 1 I'm Thread-5 @ 2 """

使用线程池ThreadPoolExecutor创建

from concurrent.futures import ThreadPoolExecutor import time import os def sayhello(a):   for i in range(10):     time.sleep(1)     print("hello: " + a) def main():   seed = ["a", "b", "c"]   # 最大线程数为3,使用with可以自动关闭线程池,简化操作   with ThreadPoolExecutor(3) as executor:     for each in seed:        # map可以保证输出的顺序, submit输出的顺序是乱的       executor.submit(sayhello, each)   print("主线程结束") if __name__ == '__main__':   main()

以上是“python线程有哪些创建方式”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI