单线程并发 import time def consumer(name): print("%s 准备吃包子了"%name) while True: baozi=yield#变成一个生成器,遇到yield断点。 print("包子[%s]来了,被[%s]吃了" %(baozi,name)) c=consumer("hunter") # c.__next__() # c.send("豆沙") def product(name): c1=consumer("A") c2=consumer("B") c1.__next__() c2.__next__() for i in range(10): time.sleep(1) print("生产了一个包子,分成了两半") c1.send(i) c2.send(i) product("hunter")
1. 可以直接用于for循环的对象就叫可迭代对象。Iterable
isinstance(,Iterable)是否是可以跌代。
2.可以被next()函数调用并不断返回下一个值的对象就叫迭代器。Iterator
isinstance(,Iterator)是否是跌代器。
用iterable变成iterator可以使用iter()函数变成一个迭代器
序列化
import json info={'name':'hunter','age':'18'} with open('text.txt','w',encoding='utf-8') as f: json.dump(info,f)#json 序列化 成文件
反序列化
import json with open("text.txt",'r',encoding='utf-8') as f: data=json.load(f)#反序列化 print(data['name'])
获取路径:
import os import sys # sys.path.append() Base_Path=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#dirname 只取路径把目录名去掉。 abspath()取出绝对路径 __file__取出相对路径 sys.path.append(Base_Path)#动态加入环境变量。 print(Base_Path) from core import main main.m()