多线程,多进程,协程
进程池
from multiprocessing import Process,Pool
import time
def Foo(i):
time.sleep(2)
return i+100
def Bar(arg):
print('-->exec done:',arg)
pool = Pool(5) #允许进程池同时放入5个进程
for i in range(10):
pool.apply_async(func=Foo, args=(i,),callback=Bar)
#func子进程执行完后,才会执行callback,否则callback不执行(而且callback是由父进程来执行了)
# apply是阻塞,apply_async 非阻塞
#pool.apply(func=Foo, args=(i,))
print('end')
pool.close()
pool.join() #主进程等待所有子进程执行完毕。必须在close()或terminate()之后。
协程
def consumer(name):
print('开始吃包子...')
while True:
print('\033[31;1m[consumer]%s需要包子\033[0m'%name)
bone = yield #接收send发送的数据
print('\033[31;1m[%s]吃了%s个包子\033[0m'%(name,bone))
def producer(obj1):
obj1.send(None) #必须先发送None
for i in range(3):
print('\033[32;1m[producer]\033[0m正在做%s个包子'%i)
obj1.send(i)
if __name__ == '__main__':
con1 = consumer('消费者A') #创建消费者对象
producer(con1)
字典
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
# 增加值,读值
dict['ni']='test'
# 删除值
del dict['ni']
# 删除全部
dict.clear()
sorted(dict.items(),key = lambda x:x[1],reverse = True)
列表
names = ['a','b','c','d']
name.append('e')
name.remove()
name.sort()
name[]
# 列表生成式
[x * x for x in range(1, 11)]
函数
lambada x,y:x+y
文件操作
with open("filename","w") as f:
f.write(str)