python线程的几种创建方式详解

 更新时间:2019年08月29日 10:01:30   作者:三国小梦  
这篇文章主要介绍了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 interpolate插值实例

    python interpolate插值实例

    这篇文章主要介绍了python interpolate插值实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Python实现轻松读取大文件的技巧揭秘

    Python实现轻松读取大文件的技巧揭秘

    Python提供了多种方法来读取文件内容,其中包括read()、readline()和readlines()三个常用的函数,本文将深入探讨这三个函数的使用方法,需要的可以参考一下
    2023-08-08
  • Python Scrapy框架第一个入门程序示例

    Python Scrapy框架第一个入门程序示例

    这篇文章主要介绍了Python Scrapy框架第一个入门程序,结合实例形式分析了Python Scrapy框架项目的搭建、抓取字段设置、数据库保存等相关操作技巧,需要的朋友可以参考下
    2020-02-02
  • Python实现的百度站长自动URL提交小工具

    Python实现的百度站长自动URL提交小工具

    这篇文章主要介绍了Python实现的百度站长自动URL提交小工具,主要难点在验证码识别部分,研究验证码识别的朋友可以参考下
    2014-06-06
  • 使用Python进行同期群分析(Cohort Analysis)

    使用Python进行同期群分析(Cohort Analysis)

    同期群(Cohort)的字面意思(有共同特点或举止类同的)一群人,比如不同性别,不同年龄。这篇文章主要介绍了用Python语言来进行同期群分析,感兴趣的同学可以阅读参考一下本文
    2023-03-03
  • Python中Sorted()函数的key参数使用方法详解

    Python中Sorted()函数的key参数使用方法详解

    这篇文章主要介绍了关于Python中Sorted()函数的key参数使用方法 ,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-06-06
  • 提高Python生产力的五个Jupyter notebook插件

    提高Python生产力的五个Jupyter notebook插件

    Jupyter Notebook 因其可用性和实用性而成为数据分析和机器学习模型领域最流行的 IDE,它也是很多数据初学者的首选 IDE。它最具特色的是,拥有丰富的插件、扩展数据处理能力和提升工作效率
    2021-11-11
  • 解决matplotlib.pyplot在Jupyter notebook中不显示图像问题

    解决matplotlib.pyplot在Jupyter notebook中不显示图像问题

    这篇文章主要介绍了解决matplotlib.pyplot在Jupyter notebook中不显示图像问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python图像处理之识别图像中的文字(实例讲解)

    Python图像处理之识别图像中的文字(实例讲解)

    今天小编就为大家分享一篇Python图像处理之识别图像中的文字(实例讲解),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python实现随机划分图片数据集的示例代码

    Python实现随机划分图片数据集的示例代码

    这篇文章主要为大家详细介绍了如何通过Python实现随机将图片与标注文件划分为训练集和测试集,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-05-05

最新评论