• 4子线程的创建与启动


    """方法一:子线程的创建与启动之直接实例化Thread"""

    """
    标准库模块mthreading提供了一个类对象Thread,用于表示线程
    使用类对象Thread创建并启动子线程的第1种方式为:
    1、根据类对象Thread创建线程实例对象
    2、调用线程实例对象方法start()启动线程
    调用方法start后,会自动调用run(),方法run会自动调用参数target指定的函数

    """

    from threading import Thread, current_thread
    import time

    def do_sth(arg1, arg2):
    print('子线程启动(%s)' % current_thread().getName())
    time.sleep(20)
    print('arg1=%d, arg2=%d' %(arg1, arg2))
    print('子线程结束(%s)' % current_thread().getName())


    print('父线程启动(%s)' % current_thread().getName())

    thread = Thread(target=do_sth, args=(5, 8), name='mythread')
    thread.start()

    time.sleep(40)

    print('父线程结束(%s)'% current_thread().getName())


    ############################################################################


    """方法二:子线程的创建与启动之继承Thread"""


    """
    使用类对象thread创建并启动子线程的第2种方式:
    1、自定义继承Thread的类对象,重写方法__init__()和run()
    2、根据自定义的类对象创建线程实例对象
    3、调用线程实例对象的方法start()启动线程
    这里会自动调用重写后的run()方法
    """

    from threading import Thread, current_thread
    import time

    class Mythread(Thread):
    def __init__(self, name, args):
    super().__init__(name=name)
    self.args = args

    def run(self):
    print('子线程启动(%s)' % current_thread().getName())
    time.sleep(20)
    print('arg1=%d, arg2=%d' % self.args)
    print('子线程结束(%s)' % current_thread().getName())


    print('父线程启动(%s)' % current_thread().getName())

    mt = Mythread(name='mythread', args=(5,8))
    mt.start()

    time.sleep(20)

    print('父线程结束(%s)' % current_thread().getName())
  • 相关阅读:
    .NET System.Web.HttpContext.Current.Request报索引超出数组界限。
    Jq将字符串复制粘贴到剪贴板
    设置VS以管理员身份运行
    http遇到的那些坑,iis上传文件报413错误 asp.net MVC
    百度地图api使用,简单搜索+经纬度定位+自定义消息窗口
    常见的sql server 链接问题------持续更新
    解决电脑不能访问局域网共享,局域网共享中找不到。
    博文图片挂了临时解决办法
    博客声明
    06. redis cluster
  • 原文地址:https://www.cnblogs.com/sruzzg/p/12991867.html
Copyright © 2020-2023  润新知