首页 > 编程语言 > 详细

并发编程 线程

时间:2019-08-12 21:09:30      阅读:87      评论:0      收藏:0      [点我收藏+]

1.线程的概念:

  1. 什么是线程: 进程和线程都是虚拟单位,都是用来帮助我木门形象的描述某种事物

    进程 : 资源单位    线程:执行单位

    每一个进程都自带一个线程,线程才是真正的执行单位,进程只是在线程运行过程中提供代码运行所需要的资源

技术分享图片

 

  2. 为什么要有线程:

    开进程 1 申请内存空间 耗资源,  拷贝代码, 耗资源   

    开线程  一个进程内可以起多个线程,并且线程与线程之间的数据是共享的

    开启线程的开销要远远小于开启进程的开销

2.Threading.Thread 创建线程模块

Thread实例对象的方法
  # isAlive(): 返回线程是否活动的。
  # getName(): 返回线程名。
  # setName(): 设置线程名。

threading模块提供的一些方法:
  # threading.currentThread(): 返回当前的线程变量。
  # threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
  # threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。

 

3.代码的实现

  1.创建线程的两种方式

from threading import Thread
import time

def func(name):
    print(f{name}线程正在创建)
    time.sleep(2)
    print(f{name}线程结束)
# 开线程不需要在__main__代码块内 但是习惯性的还是写在__main__代码块内
if __name__ == __main__:
    t = Thread(target=func,args=(小明,))
    t.start()
    print()
from threading import Thread
import time
class MyThread(Thread):
    def __init__(self,name):
        super().__init__()
        self.name = name

    def run(self):
        print(f{self.name}线程正在创建)
        time.sleep(2)
        print(f{self.name}线程结束)


if __name__ == __main__:
    t = MyThread(小明)
    t.start()
    print()

  2.线程对象及其他方法:

from threading import Thread,current_thread,active_count
import time
import os

def task(name,i):
    print(%s is running%name)
    # print(‘子current_thread:‘,current_thread().name)
    # print(‘子‘,os.getpid())
    time.sleep(i)

    print(%s is over%name)
# 开线程不需要在__main__代码块内 但是习惯性的还是写在__main__代码块内
t = Thread(target=task,args=(egon,1))
t1 = Thread(target=task,args=(jason,2))
t.start()  # 告诉操作系统开辟一个线程  线程的开销远远小于进程
t1.start()  # 告诉操作系统开辟一个线
t1.join()  # 主线程等待子线程运行完毕
print(当前正在活跃的线程数,active_count())
# 小的代码执行完 线程就已经开启了
print()
# print(‘主current_thread:‘,current_thread().name)
# print(‘主‘,os.getpid())

 

并发编程 线程

原文:https://www.cnblogs.com/yanglingyao/p/11342136.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!