#author("2023-10-09T20:03:43+08:00","default:Admin","Admin")
#author("2023-11-10T19:26:33+08:00","default:Admin","Admin")
[[Python]]

&color(red){※This article is based on Python 3.7.3};

#contents

* 指定函数的方式 [#b7b0822d]

+ 同样是指定函数传入参数的形式。生成线程对象后调用 start()方法启动。
+ 但是此时发现主线程中打印的话在最后面执行了,其实是因为创建线程的开销极小,几乎是一瞬间就可以
创建,也就是执行的速度很快。

例
#codeprettify{{
from threading import Thread

def run(username): 
    print(f'{username} is running')

if __name__ == '__main__':  # 不需要在 __main__ 下写,可以保持习惯写下。
    t = Thread(target=run, args=('1111', ))
    t.start()
	print('主线程')

# 输出结果
1111 is running
主线程
}}



* 继承类的方法 [#e297c369]

同样的继承 Thread类,并定义 run() 方法,该方法也会自动被 target 指定执行。并通过__init__ 来传参

例
#codeprettify{{
from threading import Thread

class MyThread(Thread):
    def __init__(self, name):  
        super().__init__()
        self.name = name
    def run(self):
        print(f'{self.name} is running')

if __name__ == '__main__':  # 可以不写。
    t = MyThread('11111')
    t.start()

# 输出结果
11111 is running
}}

* 进程等待 [#w66382f6]

join

#codeprettify{{
import threading

def demo():
    print('子线程开始运行')
    # 模拟子线程执行时间
    time.sleep(2)
    print('子线程结束运行')

t = threading.Thread(target=demo)
t.start()
t.join()
print('主线程结束')
}}


#hr();
コメント:
#comment_kcaptcha

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS