线程,线程锁,线程队列---------之(线程)

 线程

--进程与线程的区别

进程:每个程序都会有一个进程,负责管理程序各个功能的执行,进程有且只有一个

线程:每个进程里至少有一个线程,称为主线程,除此以外还会有其他线程,称为分线程。线程是控制任务执行的最小单位

-------进程负责控制各个线程的执行,当程序运行,进程启动,程序关闭,进程结束。

--主线程和分线程

 1、代码执行默认运行在主线程里面,如果需要执行新的任务,可以开辟分线程
 2、分线程个数没有限制,分线程里面的任务结束后,分线程结束

--分线程的使用场景:
1、当有大量任务需要执行的时候,可以将任务放入分线程里面
2、当大量任务需要执行的时候,而任务的执行顺序需要指定的时候,可以使用分线程
3、当界面有大量效果需要更新的时候,需要放入到分线程

 --分线程和异步的区别:
1、分线程可以同时开启多个任务,所有的任务分线程自己完成
2、异步  可以同时开启多个任务,但是自己只做一个任务,其他任务命令其他人来完成
同步任务 :上一个任务没有完成,下一个任务不能开启
异步任务:上一个任务没有完成,下一个任务也可以开启


python里面有两个负责线程的模块,thread 和 threading           

threading在thread模块基础上做了扩展

代码实现:


import threading
#获取当前线程的名称
print('当前线程为',threading.current_thread().name)
def myThread():
    print('位置1',threading.current_thread().name)
    print('位置2', threading.current_thread().name)
    print('位置3', threading.current_thread().name)
    print('位置4', threading.current_thread().name)
    print('位置5', threading.current_thread().name)
    print('位置6', threading.current_thread().name)
myThread()

class People(object):
    def thread_test(self):
        print('对象方法',threading.current_thread().name)
p = People()
p.thread_test()
# threading.Thread开辟一个新的线程  target目标
sub_thread = threading.Thread(target=myThread,name = 'newThread')
# sub_thread2 = threading.Thread(target=myThread,name = 'thread2')
#开始执行分线程
sub_thread.start()
#join 确保任务的执行顺序 自己的线程先完成 之后再执行其他线程
sub_thread.join()
# sub_thread2.start()

# 当程序运行时,会想在主线程中执行(因为程序刚开始的时候,只有主线程,没有分线程)
# 然后会根据情况进入到分线程,主线程和分线程的任务是交叉进行的,
# (因为是两个路)自己线程的执行情况不回影响对方线程
# 所以感觉是交叉的
# 分线程代码结束以后,会回到主线程
print('outside1',threading.current_thread().name)
print('outside2',threading.current_thread().name)
print('outside3',threading.current_thread().name)
print('outside4',threading.current_thread().name)
print('outside5',threading.current_thread().name)

代码执行结果:

猜你喜欢

转载自blog.csdn.net/weixin_42660771/article/details/81347388