python 多线程代码_python多线程

单线程 一个人干活  线程和线程之间是相互独立的

多线程,多个人干活

线程是最小的单位  ,一个进程包含多个线程

一个python文件就是一个进程

单线程实现代码

import threading

import time

def ces():

print('打算卫士 ')

time.sleep(2)

def xiyify():

print('洗衣服')

time.sleep(3)

def zuofan():

print('做饭')

time.sleep(1)

star=time.time()

ces()

xiyify()

zuofan()

end=time.time()

print(end-star)

多线程实现代码

import threading

import time

def ces():

print('打算卫士 ')

time.sleep(2)

def xiyify():

print('洗衣服')

time.sleep(3)

def zuofan():

print('做饭')

time.sleep(1)

stars=time.time()

C=threading.Thread(target=ces)

C1=threading.Thread(target=xiyify)

C2=threading.Thread(target=zuofan)

C.start()

C1.start()

C2.start()

end_time=time.time()

print(end_time-stars)

思考多线程有几个线程????????????什么时候用到多线程??/多线程代码有三个线程为什么执行时间才不到1s执行 ?

有四个线程 一个主线程 三个多线程

当执行脚本时间太长需要用到多线程节省时间

因为 我们的代码结果是主线程的时间 想要看到多线程的执行时间就要更改代码,让主线程等多线程执行完毕在执行主线程

import threading

import time

def ces():

print('打算卫士 ')

time.sleep(2)

def xiyify():

print('洗衣服')

time.sleep(3)

def zuofan():

print('做饭')

time.sleep(1)

stars=time.time()

C=threading.Thread(target=ces)

C1=threading.Thread(target=xiyify)

C2=threading.Thread(target=zuofan)

C.start()

C1.start()

C2.start()

#先让你们都干活,干完活了在等待

C.join()#加等待时间等待

C1.join()#加等待时间等待

C2.join()#加等待时间等待

end_time=time.time()

print(end_time-stars)

起一个线程写这么多的代码,那我们起一百个线程,写一百行是不是代码很庞大,这时候需要一个好的方法

import threading,time,random

def exce():

print(threading.current_thread())#看当前哪一个进程在运行

time.sleep(random.randint(1,5))

print('洗衣服')

for i in range(10):#你要起多少线程就写多少

t=threading.Thread(target=exce)

t.start()

这时候思考如何让主线程等待主线程呢

思路获取到当前能存活多少线程 ,获取到了当前的线程数,写一个死循环判断他,等于一的时候,子线程代表运行完了

两种方法

等多个子线程 执行结束,把启动的子线程放到list里 在循环调用t.jion()

import threading,time,random

thread_list=[]

def exce():

print(threading.current_thread())#看当前哪一个进程在运行

time.sleep(random.randint(1,5))

print('洗衣服')

for i in range(10):#你要起多少线程就写多少

t=threading.Thread(target=exce)

thread_list.append(t)

t.start()

for t in thread_list:

t.join()

#第二种方法

import threading,time,random

def exce():

print(threading.current_thread())#看当前哪一个进程在运行

time.sleep(random.randint(1,5))

print('洗衣服')

for i in range(10):#你要起多少线程就写多少

t=threading.Thread(target=exce)

t.start()

while threading.active_count()!=1:

pass

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值