码迷,mamicode.com
首页 > 编程语言 > 详细

网络编程之多线程

时间:2018-11-09 20:53:43      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:区别   怎样   枚举   文件   活跃   current   基本   over   def   

线程理论:

线程是什么?
线程是CPU的基本执行单位 线程里面包括就是要执行的代码

进程是一个资源单位 其中包括了这个程序需要的所有资源
就像是一个工厂 里面包括了生产所需所有资源
线程像一条流水线 包含具体的执行步骤
一个工厂中可以包含多个线程 每个线程可以生产不同的产品


每个进程被启动后 就会自动创建一个线程 该线程会从程序入口开始执行代码(py程序入口就是被执行文件的第一行)
被称之为主线程
如果主线程在完成任务时耗时太长 可以开启子线程来辅助主线程

 

线程 VS 进程:

  线程 和进程的区别
      进程是一个资源单位
      一个进程可以包含多个线程
      多个线程之间数据可以共享
      线程开销比进程小
      在多线程中CPU的切换速度会非常快 但资源消耗没有进程高

怎样开启线程:


from threading import Thread
import time,os

def task():
    time.sleep(2)
    print("子线程 run.....")
    print(os.getpid())    #查看子线程pid

#创建一个子线程
t = Thread(target=task)
t.start()   #启动子线程

# 主线程等到子线程结束
t.join()
print("over")
print(os.getpid())

 

守护线程:

from threading import Thread
import time

def task():
    time.sleep(5)
    print("子线程...")

t = Thread(target=task)
t.daemon = True  # 守护线程  执行顺序与进程中一样   与进程类似
t.start()
print("over")

 

常用方法:

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

def task():
    print("子线程...")
    time.sleep(1)
    # 获取当前线程对象  非常常用
    print(current_thread())

t = Thread(target=task,name="线程!")
# t.daemon = True  # 守护线程  执行顺序与进程中一样
print(t.name)
print(t)
#启动线程 t.start()
# 获取当前活跃线程的数量 print(active_count()) # 返回活跃的线程对象枚举 print(enumerate()) print("over")

 

启动线程的另一种方式:

from threading import Thread,current_thread

class MyThread(Thread):
    def run(self):    #和进程类似 都需指定一个run 函数
        print("run 函数执行!")
        print(current_thread())

mt = MyThread()
mt.start()

print(current_thread())

 

 

 

 

 

 



网络编程之多线程

标签:区别   怎样   枚举   文件   活跃   current   基本   over   def   

原文地址:https://www.cnblogs.com/TF511/p/9936840.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!