day19多线程

  今天主要学习多线程的相关知识。

  一、多线程技术

  • 主线程
      每个进程默认都会有一个线程,这个线程我们一般叫做主线程。默认情况下,所有的代码都是在主线程中执行。
  • 子线程
      一个进程中可以有多个线程。除了主线程以外,其他线程需要手动的添加。
  • threading是python中的一个内置模块,用来支持多线程。
      Thread类的对象就是线程对象,需要线程的时候,就创建这个类或者这个类的子类对象。

Thread类创建线程的格式为:
  Thread(target,args)
  target:需要在子线程中调用的函数的函数名。
  args:函数的实参,以元祖形式传参。

import threading
import datetime
import time
def download(file):
    print(threading.currentThread())
    print('开始下载:'+file, datetime.datetime.now())
    time.sleep(10)
    print(file+'下载结束:', datetime.datetime.now())
print('主线程中的代码')
print(threading.currentThread())
t1 = threading.Thread(target=download, args=('终结者',))
t1.start()

  二、面向对象的多线程技术

面向对象实现多线程技术:
  1、声明一个类继承Thread类
  2、重写run方法,将需要在子线程中执行的任务放倒run方法中
  3、在需要子线程的位置去创建这个类的对象,然后用对象调用start方法去执行run中的任务。

class DownloadThread(Thread):
    """下载线程类"""
    def __init__(self, file):
        super().__init__()
        self.file = file
    def run(self):
        print(self.file + '开始下载:', datetime.datetime.now())
        time.sleep(randint(5, 10))
        print(self.file + '下载结束:', datetime.datetime.now())
t1 = DownloadThread('沉默的羔羊')
t1.start()
t2 = DownloadThread('恐怖游轮')
t2.start()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    胜浩_ae28阅读 5,153评论 0 23
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 2,994评论 1 18
  • 一.多线程技术 1.主线程每个进程默认都会有一个线程,这个线程我们一般叫它主线程.默认情况下,所有代码都是在主线程...
    葡萄柚子茶阅读 175评论 0 0
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 2,509评论 1 15
  • 一树撑开黄金伞,登高望远万里天。 落叶有情随根去,秋水无意润人间。
    瀚正阅读 202评论 2 4