#小练习
# from multiprocessing import Process,Queue
# class Student():
# def __init__(self,name,age):
# self.name=name
# self.__age=age
# def say(self):
# print(self.name,self.__age)
# def show(self):
# return self.__age
# def sender(q):
# zs=Student('张三',10)
# ls=Student('李四',20)
# ww=Student('王五',30)
# zl=Student('赵六',40)
# a=[zs,ls,ww,zl]
# for x in a:
# q.put(x)
# def receiver(q):
# num=0
# for i in range(4):
# x=q.get()
# if 30>=x.show()>=20:
# num+=1
# print(x.name,x.show())
# if __name__ == '__main__':
# q=Queue(4)
# p1=Process(target=sender,args=(q,))
# p2=Process(target=receiver,args=(q,))
# p1.start()
# p2.start()#线程 ————锁
# from threading import Thread
# import time
# dongzuo=0 #全局资源
# def sing():
# global dongzuo # 获取全局资源
# for i in range(5):
# print('唱歌:动作',dongzuo)
# dongzuo+=1
# time.sleep(0.6)
# def dance():
# global dongzuo #全局资源
# for i in range(5):
# print('跳舞:动作',dongzuo)
# dongzuo+=1
# time.sleep(0.6)
# if __name__ == '__main__':
# t1=Thread(target=sing)
# t2=Thread(target=dance)
# t1.start()
# t2.start()#互斥锁# from threading import Thread,Lock
# import time
# dongzuo=0 #全局资源
# def sing():
# global dongzuo # 获取全局资源
# for i in range(5):
# lockx.acquire()
# print('唱歌:动作',dongzuo)
# dongzuo+=1
# lockx.release()
# time.sleep(0.6)
# def dance():
# global dongzuo #全局资源
# for i in range(5):
# lockx.acquire() #索获取资源
# print('跳舞:动作',dongzuo)
# dongzuo+=1
# lockx.release()
# time.sleep(0.6)
# if __name__ == '__main__':
# lockx=Lock() #定义一个锁
# t1=Thread(target=sing)
# t2=Thread(target=dance)
# t1.start()
# t2.start()#死锁# from threading import Thread,Lock
# import time
# #死锁 都砸等待对方的条件
# def wzuoFan():
# guoLock.acquire() #获取了锅的锁
# print('w获取了锅')
# time.sleep(3)
# shaoLock.acquire() #希望勺的锁,但是勺的锁被xzuoFan首先获取
# print('w可以做饭了')
# guoLock.release()
# shaoLock.release()
# def xzuoFan():
# shaoLock.acquire() #获取了勺的锁
# print('x获取了勺')
# time.sleep(3)
# shaoLock.acquire() #希望锅的锁,但是锅的锁被wzuoFan首先获取
# print('x可以做饭了')
# shaoLock.release()
# guoLock.release()
# if __name__ == '__main__':
# guoLock=Lock()
# shaoLock=Lock()
# t1=Thread(target=wzuoFan)
# t2=Thread(target=xzuoFan)
# t1.start()
# t2.start()#小练习# from threading import Thread,Lock
# import time
# def daoshu():
# lock.acquire()
# for i in range(len(a)):
# j=str(a[i])
# d=j[::-1]
# a[i]=int(d)
# lock.release()
# def daoxu():
# lock.acquire()
# i=0
# j=len(a)-1
# while i<len(a)//2:
# a[i],a[j]=a[j],a[i]
# i+=1
# j-=1
# lock.release()
# if __name__ == '__main__':
# a=[123,234,456,789]
# lock=Lock()
# t1=Thread(target=daoshu)
# t2 = Thread(target=daoxu)
# t1.start()
# t2.start()
# t1.join()
# t2.join()
# print(a)#线程对列# from threading import Thread,Lock
# from queue import Queue
# q=Queue(3)
# print(q.empty())
# q.put('1')
# q.put('2')
# q.put('3')
# print(q.get())
# q.put("4")
# print(q.full())
# try:
# q.put('5',block=False)
# except:
# print('满了')#对列
# from threading import Thread,Lock
# from queue import LifoQueue # 后进先出
# q=LifoQueue(3)
# q.put(1)
# q.put(2)
# q.put(3)
# print(q.get())
# print(q.get())
# print(q.get())#优先级的消息对列
# from threading import Thread,Lock
# from queue import PriorityQueue
# q=PriorityQueue(5)
# q.put((2,'消息1'))
# q.put((3,'消息2'))
# q.put((5,'消息3'))
# q.put((1,'消息4'))
# print(q.get())
# print(q.get())
# print(q.get())
# print(q.get())# from threading import Thread,Lock
# from queue import PriorityQueue
# q=PriorityQueue(5)
# q.put((2,'消息1'))
# q.put((3,'消息2'))
# q.put((5,'消息3'))
# q.put((1,'消息4'))
# print(q.get())
# print(q.get())
# print(q.get())
# print(q.get())
# while q.qsize()>0:
# print(q.get())#线程间通信
# from threading import Thread,Lock
# from queue import Queue
# import time
# def chanbaozi(name,q):
# count=0
# while True:
# bz='包子%d'%(count+1)
# q.put(bz)
# s=name+'生成'+bz
# print(s)
# count+=1
# time.sleep(1)
# def chibaozi(name,q):
# while True:
# bz=q.get()
# s=name+'吃'+bz
# print(s)
# time.sleep(1.5)
# if __name__ == '__main__':
# q=Queue(2)
# t1=Thread(target=chanbaozi,args=('你',q))
# t2=Thread(target=chibaozi,args=('我',q))
# t1.start()
# t2.start()#线程子类化
# from threading import Thread
# from queue import Queue
# import time
# class MyThread(Thread):
# def __init__(self,q,style):
# super().__init__()
# self.q=q
# self.style=style
# def run(self):
# if self.style=='生产':
# i=0
# while i<10:
# self.q.put(str('包子'+str(i+1)))
# s='生产包子'+str(i+1)
# print(s)
# time.sleep(1)
# i+=1
# else:
# i=0
# while i<10:
# s='消费'+ q.get()
# print(s)
# time.sleep(1)
# i+=1
# if __name__ == '__main__':
# q=Queue(3)
# t=MyThread(q,'生产')
# t.start()
# t1=MyThread(q,'消费')
# t1.start()#同步互斥锁# from threading import Thread,Lock
# from queue import Queue
# import time
# x=0
# def A():
# global x
# i=0
# y.acquire()
# while i<100000:
# x=x+1
# i+=1
# y.release()
# print(x)
# def B():
# global x
# y.acquire()
# i=0
# while i<100000:
# x=x+1
# i+=1
# y.release()
# print(x)
# if __name__ == '__main__':
# y=Lock()
# t1=Thread(target=A)
# t2=Thread(target=B)
# t1.start()
# t2.start()#协程# import time
# def A(hs):
# i=0
# while i<10:
# print('A开始')
# next(hs)
# print('A结束')
# i+=1
# def b():
# i=0
# while i<10:
# print('B开始')
# yield
# print('B结束')
# if __name__ == '__main__':
# x=b()
# A(x)import time
from threading import Thread
from multiprocessing import Process
def A():i=0start=time.time()while i<30000000:i+=1end=time.time()print(end-start)
def B():i=0start=time.time()while i<30000000:i+=1end=time.time()print(end-start)
if __name__ == '__main__':t1=Process(target=A)t2=Process(target=B)t1.start()t2.start()