首页 > 编程语言 > 详细

python语法基础-并发编程-线程-线程理论和线程的启动

时间:2020-02-28 11:27:30      阅读:64      评论:0      收藏:0      [点我收藏+]

#######################       线程介绍         ##############################

"""
线程介绍

为什么会有进程?
主要是能够同时处理多个任务,多个任务还要进行切换,时间片轮转
为什么会有线程?
进程并不是执行任务的最小单元,每一个进程里面有都一个线程,我们叫做主线程,
早期没有线程,一个进程只能干一个任务,如果有多个任务,只能多起进程,进程太多不行的,
进程内部的内存是共享的,所以需要线程,否则还要涉及到进程间的通信,这比较浪费资源

所以线程的出现解决了两个问题:
1,进程内部的通信
2,一个进程可以处理多个任务,

线程的开销比进程少,可以认为是一个轻型的进程,
进程是资源分配的最小单位,线程是cpu调度的最小单位,

进程和线程的区别:
1,进程之间的内存是独立的,但是一个进程之内的线程是可以共享的,
2,进程之间切换是慢于线程之间的切换的,
"""

 

##################      线程启动的两种方式       ###############

"""
在python中使用线程 threading模块 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再详细介绍 """ # 第一种启动方式: from threading import Thread import time,os def func(n): # 这是子线程完成的 time.sleep(1) # 虽然是打印了10次,但是只等待了1秒,所以10线程之间是并发的, print(n) for i in range(10): # 启动10个线程, t = Thread(target=func,args=(i,)) # 注册 t.start() # 这是启动了一个线程 # 第二种启动线程的方法: # class MyTread(Thread): # def __init__(self,arg): # super().__init__() # self.arg=arg # def run(self): # time.sleep(1) # print(1,os.getpid()) # for i in range(10): # t = MyTread(10) # 传递参数 # t.start() # # print("主线程",os.getpid()) # 打印子进程和主进程的进程号,都是一样的

Thread类的其他方法

# Threading中的其他方法
from threading import Thread
import time
def sayhi(name):
    time.sleep(2)
    print(‘%s say hello‘ %name)
if __name__ == ‘__main__‘:
    t=Thread(target=sayhi,args=(‘egon‘,))
    t.start()
    t.join()
    print(‘主线程‘)
    print(t.is_alive())
    ‘‘‘
    egon say hello
    主线程
    False
    ‘‘‘
###############################################
import threading
def func(n):
    print(n, threading.current_thread())  # <Thread(Thread-1, started 5428)>
for i in range(10):
    threading.Thread(target=func, args=(1,)).start()
print(threading.active_count())  # 查看活跃的线程数,
print(threading.current_thread())

 

python语法基础-并发编程-线程-线程理论和线程的启动

原文:https://www.cnblogs.com/andy0816/p/12375813.html

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