目录
开启子线程的两种方式
第一种方式
按照进程的方式开启只是将模块换了一下,
以函数为例子
代码如下
##开启方式1
from threading import Thread#这里将threading包里面的Thread模块导入
import time
def task():
print('子线程start')
time.sleep(2)
print('子线程end')
if __name__ == '__main__':
t = Thread(target=task)#将开启的
t.start()#告诉操作系统开一个线程
print('主线程')
这个代码将模块换了一个下,整体和进程的格式以及使用差不多,这就来体现一下它的不同点以及相同点
##开启方式1
from threading import Thread#这里将threading包里面的Thread模块导入
import time
def task(xulie):
print(f'子线程{xulie}start')
time.sleep(2)
print(f'子线程{xulie}end')
if __name__ == '__main__':
t = Thread(target=task,args=('第一',))#给要打开的子线程的名名字赋值
t.start()#告诉操作系统开一个线程
print('主线程')
相同点:就是可以按照给子进程赋名字的方法,给开启的子线程也进行名字的赋值,同理其它的传参也可以按照子进程来使用
不同点:子线程和主线程会同时执行,这是因为子线程的执行不需要开辟内存空间,所以比较快。然后进程里的子进程需要等操作系统给它开内存空间所以慢
结果如图
第二种方式
也是和进程的差不多
这里以类为例子
代码如下
# 开启方式二(类)
from threading import Thread
import time
class Myt(Thread):
def run(self):
print('子线程start')
time.sleep(2)
print('子线程end')
t = Myt()
t.start()
print('主线程')
这个代码里面没有使用全局调用是因为,线程不会有进程的问题,在windows下使用Process会出现无限递归导入的问题,但是Thread不会出现这个问题,所以用不用全局调用问题不大
结果如图
标签:__,10,Thread,31,开启,线程,print,import From: https://www.cnblogs.com/slzjb/p/17800504.html