【python | Thread】多线程记录

这篇具有很好参考价值的文章主要介绍了【python | Thread】多线程记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

every blog every motto: You can do more than you think.
https://blog.csdn.net/weixin_39190382?type=blog

0. 前言

python 多线程记录

说明: 由于GIL锁的存,并非真正意义上的多线程

1. 正文

1.1 对函数使用多线程

from threading import Thread
from time import sleep, ctime

def func(name, sec):
    print('---开始---', name, '时间', ctime())
    sleep(sec)
    print('***结束***', name, '时间', ctime())

# 创建 Thread 实例
t1 = Thread(target=func, args=('第一个线程', 1))
t2 = Thread(target=func, args=('第二个线程', 2))

# 启动线程运行
t1.start()
t2.start()

# 等待所有线程执行完毕
t1.join()  # join() 等待线程终止,要不然一直挂起
t2.join()

1.2 对类使用多线程

from threading import Thread
from time import sleep, ctime


class MyClass(object):

    def func(self,name,sec):
        print('---开始---', name, '时间', ctime())
        sleep(sec)
        print('***结束***', name, '时间', ctime())

def main():
    # 创建 Thread 实例
    t1 = Thread(target=MyClass().func, args=(1, 1))
    t2 = Thread(target=MyClass().func, args=(2, 2))

    # 启动线程运行
    t1.start()
    t2.start()

    # 等待所有线程执行完毕
    t1.join()  # join() 等待线程终止,要不然一直挂起
    t2.join()

if __name__=="__main__":
    main()

1.3 继承的方式使用多线程

说明:
重写Thread类里面的run方法 ,里面写入你需要执行的代码,之后使用start()方法就可以调用run

from threading import Thread
from time import sleep, ctime

# 创建 Thread 的子类
class MyThread(Thread):
    def __init__(self, func, args):
        '''
        :param func: 可调用的对象
        :param args: 可调用对象的参数
        '''
        Thread.__init__(self)
        self.func = func
        self.args = args
        self.result = None

    def run(self):
        self.result = self.func(*self.args)

    def getResult(self):
        return self.result


def func(name, sec):
    print('---开始---', name, '时间', ctime())
    sleep(sec)
    print('***结束***', name, '时间', ctime())
    return sec


def main():
    # 创建 Thread 实例
    t1 = MyThread(func, (1, 1))
    t2 = MyThread(func, (2, 2))
    # 启动线程运行
    t1.start()
    t2.start()
    # 等待所有线程执行完毕
    t1.join()
    t2.join()
    # 或线程中程序的运行结果
    print(t1.getResult())
    print(t2.getResult())


if __name__ == '__main__':
    main()

参考

[1] https://zhuanlan.zhihu.com/p/91601448
[2] https://zhuanlan.zhihu.com/p/106905974文章来源地址https://www.toymoban.com/news/detail-434883.html

到了这里,关于【python | Thread】多线程记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记录--JavaScript 令人惊讶的一点:对于空数组every()方法返回true

    JavaScript 语言的内核足够大,导致我们很容易误解它的某些部分是如何工作的。我最近重构了一些使用 every ()方法的代码,并且发现我并不真正理解every()的逻辑。在我看来,我认为回调函数必须被调用并返回 true的时候every() 才能返回 true,但事实并非如此。但是对于空数组,

    2024年02月08日
    浏览(43)
  • C#基础--线程Thread和线程池ThreadPool

    1. 开启一个线程 ThreadStart 是属于System.Threading 中的一个内置委托 ParameterizedThreadStart 是属于System.Threading 中的一个内置委托 2. 暂停/恢复线程 无法实时的去 “暂停 ” 或者 “恢复” 线程,因为线程是由系统调度执行的,而且中间存在一个延时现象,不可能直接帮你执行 3. 终结

    2024年02月16日
    浏览(33)
  • 【多线程】Thread 类 详解

    继承 Thread 来创建一个线程类,并重写 run() 方法 创建 MyThread 类的实例 调用 start 方法启动线程 注意:只有调用 start 函数才真正的创建了一个线程。 更推荐使用这种方法, 因为 Runnable 只是描述了一个任务,至于任务通过进程、线程、线程池还是什么来执行的,Runnable 并不关

    2024年02月09日
    浏览(45)
  • 线程Thread

    进程就是正在运行中的程序 是1个进程(程序内部)的1条执行路径 单线程:1个进程中只有1个线程(1条执行路径) 多线程:1个进程中包含多个线程(多条执行路径) 线程之间堆内存、方法区内存共享;但是栈内存独立,1个线程一个栈 单核CPU:不能够做到真正的多线程并发

    2024年02月11日
    浏览(82)
  • 【多线程】Thread类

    线程是操作系统中的概念,操作系统内核实现了线程这样的机制,并且对用户层提供了一些 API 供用户使用(如 Linux 中的 pthread 库)。 所以本身关于线程的操作,是依赖操作系统提供的的 API,而 Java 的 JVM 已经把很多操作系统提供的功能封装好了,我们就不需要学习系统原生的

    2024年02月01日
    浏览(38)
  • 【Linux】 由“进程”过渡到“线程” -- 什么是线程(thread)?

    如何看待地址空间和页表: 地址空间是进程能看到的资源窗口 页表决定,进程真正拥有资源的情况(页表映射多少才是拥有多少) 合理的对地址空间+页表进行资源划分,我们就可以对一个进程所有的资源进行分类 虚拟地址如何找到物理地址: 最后一级页表存放的是页框的起

    2024年02月15日
    浏览(44)
  • 每每聊到线程Thread

    进程和线程 进程 所谓计算机程序 Program,其实就是通过执行一系列指令来完成某一个任务。当你启动一个程序时,操作系统(OS)会将其加载到内存中,并在内存中申请一块固定地址的命名空间(address space),并在此命名空间内执行相关指令。聪明人应该已经听出来了,这不就是

    2024年02月07日
    浏览(34)
  • C++11多线程—thread

      目录 1.thread类 2.线程函数参数 3.原子性操作库(atomic) 4.lock_guard与unique_lock 4.1mutex的种类 4.2lock_guard 4.3unique_lock 5.condition_variable         在C++11之前,涉及到多线程问题,都是和平台相关的,比如windows和linux下各有自己的接 口,这使得代码的可移植性比较差。C++11中最重要

    2023年04月16日
    浏览(34)
  • 【thread】windows设置线程名字

    std thread 官方没有这个api linux一般用pthread_getthreadid_np 或者 prctl 来解决。 pthread_getthreadid_np wasn’t on my Mac os x. pthread_t is an opaque type. Don’t beat your head over it. Just assign it to void* and call it good. If you need to printf use %p. 比如:

    2024年02月08日
    浏览(38)
  • 【多线程初阶】Thread类常见方法以及线程的状态

    本文是属于多线程初阶内容系列的, 如果还没有学习过之前文章的, 请先移步博主的之前的文章进行学习, 本文就是在学会线程的创建后, 再带大家认识一下 Thread 类以及其常见的方法, 再给大家讲解一下线程都有哪些状态. 关注收藏, 开始学习吧🧐 通过我们上篇文章的学习, 我

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包