18 11 20 网络通信 ----多任务---- 携程 ----迭代器

进行多任务的学习    携程   开始做一个迭代器   再做生成器  再学习携程    迭代器就是  可以用 for 循环 表示的一个 class

import time
from collections import Iterable
from collections import Iterator

class Classmate(object):
    def __init__(self):
        self.names = list()
        self.current_num = 0

    def add(self, name):
        self.names.append(name)

    def __iter__(self):
        """如果想要一个对象称为一个 可以迭代的对象,即可以使用for,那么必须实现__iter__方法"""
        return self  # 调用iter(xxobj)的时候 只要__iter__方法返回一个 迭代器即可,至于是自己 还是 别的对象都可以的, 但是要保证是一个迭代器(即实现了 __iter__  __next__方法)

    def __next__(self):
        if self.current_num < len(self.names):
            ret = self.names[self.current_num]
            self.current_num += 1
            return ret
        else:
            raise StopIteration

classmate = Classmate()
classmate.add("老王")
classmate.add("王二")
classmate.add("张三")

# print("判断classmate是否是可以迭代的对象:", isinstance(classmate, Iterable))
# classmate_iterator = iter(classmate)
# print("判断classmate_iterator是否是迭代器:", isinstance(classmate_iterator, Iterator))
# print(next(classmate_iterator))

for name in classmate:
    print(name)
    time.sleep(1)

要是只用for的方式  还用什么迭代器

迭代器 可以先存储生成数据的方式  到使用再生成   而不是直接存储暂时不需要的数据  可以减少很大的内存空间的占用

原文地址:https://www.cnblogs.com/fromlantianwei/p/9990258.html

时间: 2024-10-08 23:02:37

18 11 20 网络通信 ----多任务---- 携程 ----迭代器的相关文章

18 11 20 网络通信 ----多任务---- 携程 ----生成器

---恢复内容开始--- 在一个函数里面  只要有yield  就是一个生成器    举一个例子  下面的是打印一个菲薄那数列 def creat_num (all_numbers): a, b = 0, 1 current_num = 0 while current_num <= all_numbers: current_num += 1 print(a) a , b = b ,a+b list1 = creat_num(10) 当把  print  改换成 yield的时候  就是一个生成器

18 11 12 网络通信 tcp

tec 客户端的接受代码 import socket def main(): # 1. 创建tcp的套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2. 链接服务器 # tcp_socket.connect(("192.168.33.11", 7890)) server_ip = input("请输入要链接的服务器的ip:") server_port = int(input(&

18 11 15 网络通信 ---- 多线程

下面是一个  多线程  运算  调用了 threading  模块   可以同时在一个程序中  跑两个函数 import threading def text1 (): for i in range(5): print("-----%d-----" % i) def text2 (): for i in range(5): print("-----%d-----" % i) def main(): t1 = threading.Thread(target=text1

18 11 16 网络通信 ---- 多线程 同步概念 解决资源互斥的问题

---恢复内容开始--- 在多任务中  由于线程是分步执行  所以在很多线程执行的时候 会对全局变量造成很大的影响  如图中 线程一执行完一二步中 跳过第三部  而跑到线程二去执行 就会造成  全变量不稳定 引进   上锁 功能可以 不仅多线程 还能 把一个运行完再到下一个 import threading import time # 定义一个全局变量 g_num = 0 def test1(num): global g_num # 上锁,如果之前没有被上锁,那么此时 上锁成功 # 如果上锁之前

携程被攻击了?

新浪科技:据实测,通过百度推广点击进入携程网,页面显示404报错,虽然点击"返回首页"后依然可以进入携程网,但其功能和其它链接均无法使用. 12:11访问时的状态 : 12:40,携程向媒体发布声明称:"5月28日上午11:09,因携程部分服务器遭到不明攻击,导致官方网站及APP暂时无法正常使用,目前正在紧急恢复.对用户造成的不便,我司深表歉意." 友好的携程无线开发总监陈浩然透露:"数据一切安全,应用服务器正在恢复." 外部猜测 : 以下是笔者

携程在手,哪都去不了

最近互联网很不太平,玩起了连连蹲的游戏,网易蹲,网易蹲,网易蹲完支付宝蹲,支付宝蹲,支付宝蹲,支付宝蹲完携程蹲,携程蹲,携程蹲,携程蹲完好搜蹲,好搜蹲,好搜蹲,好搜蹲完... 携程以前的广告一直是"携程在手,想走就走",但是,从2015.5.28的11点09开始,携程网站便开始出现问题,从搜索引擎进入会提示404. 点击404页面的返回首页按钮后,打开的首页也不完整,并且提示网站暂时不能访问正在修复中 在携程网的官方发表的声明是这样写的"5月28日上午11:09,因携程部分服

18 11 26 用多进程 多线程 携程 实现 http 服务器的创建

下面是一个  多进程 服务器的创建 import socket import re import multiprocessing def service_client(new_socket): """为这个客户端返回数据""" # 1. 接收浏览器发送过来的请求 ,即http请求 # GET / HTTP/1.1 # ..... request = new_socket.recv(1024).decode("utf-8") #

携程日处理20亿数据,实时用户行为服务系统架构实践

携程实时用户行为服务作为基础服务,目前普遍应用在多个场景中,比如猜你喜欢(携程的推荐系统).动态广告.用户画像.浏览历史等等. 以猜你喜欢为例,猜你喜欢为应用内用户提供潜在选项,提高成交效率.旅行是一项综合性的需求,用户往往需要不止一个产品.作为一站式的旅游服务平台,跨业务线的推荐,特别是实时推荐,能实际满足用户的需求,因此在上游提供打通各业务线之间的用户行为数据有很大的必要性. 携程原有的实时用户行为系统存在一些问题,包括:1)数据覆盖不全:2)数据输出没有统一格式,对众多使用方提高了接入成本

商业研究(20):滴滴出行,进军海外包车?与OTA携程和包车创业公司,共演“三国杀”?看看分析师、投资人和权威人士等10个人的观点碰撞

 小雷友情提示:创业有风险,投资需谨慎.      前一篇文章,在探讨境外游创业公司-皇包车和易途8的时候,提到"滴滴如果进军海外包车,为海外华人提供打车和包车服务,有较大可能对海外包车公司进行较大打击". 这个想法,之前没怎么考虑,而是通过一个朋友的公众号得知的. 变革家分析了3个"出行类" 创业公司,其中皇包车和易途8主营业务是海外中文接送机+中文包车,还有一个是主打国内P2P租车的凹凸租车.    在针对凹凸租车做投资建议的时候,特别强调滴滴有非常大的可能性进