千锋教育-做有情怀、有良心、有品质的职业教育机构

python为什么可以多线程

来源:千锋教育
发布时间:2023-11-09 05:09:05
分享

由于线程是操作系统直接支持的执行单元,因此,高级语言通常都内置多线程的支持,Python也不例外,并且,Python的线程是真正的PosixThread,而不是模拟出来的线程。

Python的标准库提供了两个模块:_thread和threading,_thread是低级模块,threading是高级模块,对_thread进行了封装。绝大多数情况下,我们只需要使用threading这个高级模块。

启动一个线程就是把一个函数传入并创建Thread实例,然后调用start()开始执行:

importtime,threading#新线程执行的代码:defloop():

print('thread%sisrunning...'%threading.current_thread().name)

n=0

whilen<5:

n=n+1

print('thread%s>>>%s'%(threading.current_thread().name,n))

time.sleep(1)

print('thread%sended.'%threading.current_thread().name)

print('thread%sisrunning...'%threading.current_thread().name)

t=threading.Thread(target=loop,name='LoopThread')

t.start()

t.join()

print('thread%sended.'%threading.current_thread().name)

执行结果如下:

threadMainThreadisrunning...

threadLoopThreadisrunning...

threadLoopThread>>>1

threadLoopThread>>>2

threadLoopThread>>>3

threadLoopThread>>>4

threadLoopThread>>>5

threadLoopThreadended.

threadMainThreadended.

由于任何进程默认就会启动一个线程,我们把该线程称为主线程,主线程又可以启动新的线程,Python的threading模块有个current_thread()函数,它永远返回当前线程的实例。

主线程实例的名字叫MainThread,子线程的名字在创建时指定,我们用LoopThread命名子线程。

名字仅仅在打印时用来显示,完全没有其他意义,如果不起名字Python就自动给线程命名为Thread-1,Thread-2……

以上内容为大家介绍了python培训之为什么可以多线程,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • python如何调用函数 函数的定义及其应用所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用函数的使用包含两个步骤1.定义函数–封装独立的功能2.调用函数–享受封装的成果函数的作用:在开发时,使用函数可
  • python判断对象是否有某个属性 python判断对象是否有某个属性的方法:hasattr(object,name)说明:判断对象object是否包含名为name的属性(hasattr是通过调用getattr(ojbect,name)
  • pythonubuntu的python在哪 可执行命令sudoapt-getinstallpython3-pip安装python3.x的pip或者sudoapt-getinstallpython-pip安装python2.x的pip注:安装前最
  • python识别字符串是否为空 判断python识别字符串是否为空的方法:使用字符串长度判断len(s)==0则字符串为空iflen(username)==0orlen(password)==0:#判断输入的用户名或密码是否为空pr
  • python怎么导入数据 通过标准的Python库导入CSV文件:Python提供了一个标准的类库CSV文件。这个类库中的reader()函数用来导入CSV文件。当CSV文件被读入后,可以利用这些数据生成一个NumPy数组,用
  • python判断是否为list python判断是否为列表格式:print(isinstance(变量,list))print(isinstance(slink,list))结果:true说明为列表(list)返回false说明不是