python---多线程

主线程:py文件是一个进程,这个进程里面有一个自带的线程,称之为主线程
import threading #线程都是同时运行的,程序最小的执行单位
import time


def saodi(thread): #定义函数,找了个人,让这个人去干什么
print("%s扫地" % thread)
time.sleep(10) #扫地的时间
print("%s扫地完成" % thread)

def close():
print("关机")
#1启用多线程 默认不等待
urls = ["http://www.baidu.com","http://www.sogou.com","http://www.google.com","http://www.qq.com"]

for url in urls:
t = threading.Thread(target=saodi,args=[url])
t.start()

print(threading.activeCount()) #查看现成数,(当前线程数)
close()

#4+1 本来就有个线程 再去找四个人去干活
#主线程



2.主线程等待子线程 变成串行得了
# threads = [] #存子线程的
# for url in urls:
# t = threading.Thread(target=saodi,args=[url])
# t.start()
t.join()#告诉主线程,需要等待子线程执行结束之后,主线程才能继续去干别的,告诉主线程,等待子线程执行完成再往下执行




3、正确的,先把线程都启动加到list里面,最后循环去等待它,每个线程等待一次,第一种等待的方式
# threads = [] #存子线程的
# for url in urls:
# t = threading.Thread(target=saodi,args=[url])
# t.start()
t.join()#告诉主线程,需要等待子线程执行结束之后,主线程才能继续去干别的
# threads.append(t)
# print(threads) #方法 先写变量.print
# for thread in threads: #去外面循环
# thread.join() #告诉主线程,需要等待子线程执行结束之后,主线程才能继续去干别的

4、正确的,也是去等待
# for url in urls:
# t = threading.Thread(target=saodi,args=[url])
# t.start()
while threading.activeCount() !=1: #4不等于1,等待线程执行完成
pass

print(threading.activeCount())
close()


#计算时间:
start_time=time.time()

for i in range(5):
t = threading.Thread(target=create_data,args=(i,))
t.start()

#查看当前线程数
print(threading.activeCount()) # 默认程序有一个线程
print("时间",end_time-start_time) # 主线程运动到现在的时间 不包含其他线程时间


posted @ 2021-11-18 14:39  王王的王  阅读(234)  评论(0)    收藏  举报