python多线程详解,python多线程的实现
本文主要介绍Python多线程的使用细节。线程间的执行是乱序的,cpu会执行哪个线程。以下相关介绍可以参考。
00-1010一、实用方法二。补充:Python多线程共享变量资源竞争
目录
1.线程间的执行是乱序的,cpu会执行哪个线程被调度;2.主线程在结束前等待所有子线程结束。设置守护线程可以实现主线程结束时子线程立即结束;3.设置守护线程:1。Threading.thread (daemon=true),2。线程对象。setdaemon(true);4.线程共享全局变量,导致资源竞争。
线程之间的执行是乱序的,cpu调度哪个线程就执行哪个线程。
主线程将在结束前等待所有子线程完成。设置守护线程可以实现主线程结束时子线程会立即结束。
设置守护进程:1.threading.thread (daemon=true),2.thread object.setdaemon (true)
线程共享全局变量,导致资源竞争。
#导入模块(模块名。py,包名init.py)
导入线程
导入时间
定义任务1(计数):
#获取当前线程对象
# t=threading.current _线程()
# print(任务1 _名称: ,t.name)
打印()
对于范围内的I(计数):
打印(“任务A”,i 1)
时间.睡眠(0.5)
定义任务2(内容,计数):
print(Task2_name: ,threading.current_thread()。姓名)
对于范围内的I(计数):
打印(f { content } _ _任务B ,i 1)
时间.睡眠(0.5)
if __name__==__main__:
t1=线程。线程(target=task1,name=T1 ,daemon=True,args=(5,)。
t2=线程。线程(target=task2,name=T2 ,kwargs={content: 是, count:5})
#设置第二种方式来保护主线程
# t1.setDaemon(True)
t2.setDaemon(True)
t1.start()
T1.join() #阻塞该函数,只有在T1执行后它才会被向下执行。
t2.start()
# t2.join()
打印(“主线程结束”)
一,实用方法
执行1.资源竞争问题:和=1时,会大致分为三步(取值、加1、回写),cpu可能刚执行两步就切换到另一个线程执行;1.2.解决办法:()方法用于设置线程同步(低效),2 .锁(它可以保证同一时间只有一个线程在执行)。
资源竞争:sum=1执行时,会大致分为三步(取值、加1、写回),cpu可能刚两步就切换到另一个线程执行。
解决方法:1。用join()方法设置线程同步(低效),2。锁(它可以保证同一时间只有一个线程在执行)
导入线程
导入时间
总和=0
锁=线程。锁定()
def add_num1():
全局总和
对于I,范围为(1000000):
# lock.acquire() # lock
总和=1
# lock.release() # unlock
print(f“{ threading . current _ thread()。name}计算结果为{sum} )
def add_num2():
全局总和
对于I,范围为(1000000):
# lock.acquire()
总和=1
# lock.release()
print(f“{ threading . current _ thread()。name}计算结果为{sum} )
if __name__==__main__:
t1=线程。线程(target=add_num1)
t2=线程。线程(target=add_num2)
t1.start()
#设置阻塞功能,设置线程同步
t1.join()
t2.start()
打印(f main的总和值为{sum} )
这就是本文关于Python多线程的全部细节。关于Python多线程的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望你以后能支持热门的IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。