韩漫免费漫画在线观看方法,《好好疼爱里面》免费看,年轻漂亮的女士护士内衣,妈妈醉酒后把我当爸爸电视剧

文章 > Python基础教程 > python如何使用多线程

python如何使用多线程

头像

爱喝马黛茶的安东尼

2019-09-19 11:49:209769浏览 · 0收藏 · 0评论

多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理(Multithreading)”。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程(台湾译作“执行绪”),进而提升整体处理性能。

Python 多线程之使用方法

Python 提供多线程编程的模块有以下几个:

- _thread

- threading

- Queue

- multiprocessing

下面一一介绍:

1. _thread 模块提供了低级别的基本功能来支持多线程功能,提供简单的锁来确保同步,推荐使用 threading 模块。

2. threading 模块对 _thread 进行了封装,提供了更高级别,功能更强,更易于使用的线程管理的功能,对线程的支持更为完善,绝大多数情况下,只需要使用 threading 这个高级模块就够了。

相关推荐:《Python教程

使用 threading 进行多线程操作:

方法一:是创建 threading.Thread 实例,调用其 start() 方法。

import time
import threading
def task_thread(counter):
    print(f'线程名称:{threading.current_thread().name} 参数:{counter} 开始时间:{time.strftime("%Y-%m-%d 
    %H:%M:%S")}')
    num = counter
    while num:
        time.sleep(3)
        num -= 1
    print(f'线程名称:{threading.current_thread().name} 参数:{counter} 结束时间:{time.strftime("%Y-%m-%d 
    %H:%M:%S")}')
if __name__ == '__main__':
    print(f'主线程开始时间:{time.strftime("%Y-%m-%d %H:%M:%S")}')
    #初始化3个线程,传递不同的参数
    t1 = threading.Thread(target=task_thread, args=(3,))
    t2 = threading.Thread(target=task_thread, args=(2,))
    t3 = threading.Thread(target=task_thread, args=(1,))
    #开启三个线程
    t1.start()
    t2.start()
    t3.start()
    #等待运行结束
    t1.join()
    t2.join()
    t3.join()
    print(f'主线程结束时间:{time.strftime("%Y-%m-%d %H:%M:%S")}')

运行结果如下所示:

主线程开始时间:2018-07-06 23:03:46
线程名称:Thread-1 参数:3 开始时间:2018-07-06 23:03:46
线程名称:Thread-2 参数:2 开始时间:2018-07-06 23:03:46
线程名称:Thread-3 参数:1 开始时间:2018-07-06 23:03:46
线程名称:Thread-3 参数:1 结束时间:2018-07-06 23:03:49
线程名称:Thread-2 参数:2 结束时间:2018-07-06 23:03:52
线程名称:Thread-1 参数:3 结束时间:2018-07-06 23:03:55
主线程结束时间:2018-07-06 23:03:55

方法二:继承 Thread 类,在子类中重写 run() 和 init() 方法。

import time
import threading
class MyThread(threading.Thread):
    def __init__(self, counter):
        super().__init__()
        self.counter = counter
    def run(self):
        print(
            f'线程名称:{threading.current_thread().name} 参数:{self.counter} 开始时间:{time.strftime
            ("%Y-%m-%d %H:%M:%S")}'
        )
        counter = self.counter
        while counter:
            time.sleep(3)
            counter -= 1
        print(
            f'线程名称:{threading.current_thread().name} 参数:{self.counter} 结束时间:{time.strftime
            ("%Y-%m-%d %H:%M:%S")}'
        )
if __name__ == "__main__":
    print(f'主线程开始时间:{time.strftime("%Y-%m-%d %H:%M:%S")}')
    # 初始化3个线程,传递不同的参数
    t1 = MyThread(3)
    t2 = MyThread(2)
    t3 = MyThread(1)
    # 开启三个线程
    t1.start()
    t2.start()
    t3.start()
    # 等待运行结束
    t1.join()
    t2.join()
    t3.join()
    print(f'主线程结束时间:{time.strftime("%Y-%m-%d %H:%M:%S")}')

运行结果如下,与方法一的运行结果一致。

主线程开始时间:2018-07-06 23:34:16
线程名称:Thread-1 参数:3 开始时间:2018-07-06 23:34:16
线程名称:Thread-2 参数:2 开始时间:2018-07-06 23:34:16
线程名称:Thread-3 参数:1 开始时间:2018-07-06 23:34:16
线程名称:Thread-3 参数:1 结束时间:2018-07-06 23:34:19
线程名称:Thread-2 参数:2 结束时间:2018-07-06 23:34:22
线程名称:Thread-1 参数:3 结束时间:2018-07-06 23:34:25
主线程结束时间:2018-07-06 23:34:25

如果继承 Thread 类,想调用外部传入函数,代码如下所示:

import time
import threading
def task_thread(counter):
      print(f'线程名称:{threading.current_thread().name} 参数:{counter} 开始时间:{time.strftime("%Y-%m-%d 
      %H:%M:%S")}')
    num = counter
    while num:
        time.sleep(3)
        num -= 1
    print(f'线程名称:{threading.current_thread().name} 参数:{counter} 结束时间:{time.strftime("%Y-%m-%d 
    %H:%M:%S")}')
class MyThread(threading.Thread):
    def __init__(self, target, args):
        super().__init__()
        self.target = target
        self.args = args
    def run(self):
        self.target(*self.args)
if __name__ == "__main__":
    print(f'主线程开始时间:{time.strftime("%Y-%m-%d %H:%M:%S")}')
    # 初始化3个线程,传递不同的参数
    t1 = MyThread(target=task_thread,args=(3,))
    t2 = MyThread(target=task_thread,args=(2,))
    t3 = MyThread(target=task_thread,args=(1,))
    # 开启三个线程
    t1.start()
    t2.start()
    t3.start()
    # 等待运行结束
    t1.join()
    t2.join()
    t3.join()
    print(f'主线程结束时间:{time.strftime("%Y-%m-%d %H:%M:%S")}')

这样就和方法一是相通的,实例化自定义的线程类,运行结果不变。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

寡妇开荒40集全免费| 完美上司短剧免费完整版| 女被扒开腿狂躁XXXXX视频| (NP、高H、纯肉、真空)| 楼下邻居韩剧普通话版| 女朋友太骚了每次进去都觉得很| 我老公跟我一晚上用很多卫生纸| 色情性黄17C片麻豆AV| 《炸裂吧!巨棒》免费阅读漫画| 女士穿紧身裸体开裆光滑皮裤| 老赵揉搓苏清雅双乳| 耕耘小侄女小说全文免费阅读| 《黏糊糊的你》动漫免费观看| 美女比基尼游泳图片视频 | 成品图片的网站| 机械师笔记本| 我穿水K被同桌C出水了H漫画| 家庭性史| 鸣佐文| 《酒店激战》动漫1-5集免费观..| 少女たちよ观看免费高清电视剧| 《性爽2》电影| 三男一女免费播放电视剧大全| 啵啵| 泰剧《劈开你的腿》免费观看| 妈妈和两个姨妈一起过生日| 忘穿内裤被同桌C了好爽微博小说| 爸爸吃女儿奶奶高情商回复| 咬女生小头头视频| 臭小子快拔出来我是你嫲视频| 李丽珍电影经典免费观看| 只有一根绳子遮住重要部位 | 老公每天晚上吃奶对身体有伤害吗 | 欧美XBOX与IPHONE| 妈妈你真棒插曲最后接吻是谁| 做一次爱下面多久才能恢复| 大龟慢慢挺进我的体内| 蜜桃成熟时2| 第一章激情艳妇| 《太太你想丈夫被开除吧》| 我在开会他在下添好爽