摘要:
epoll是事件通知方式接收数据,效率比轮询要高 代码:
阅读全文
posted @ 2019-08-28 11:03
BZ易风
阅读(458)
推荐(0)
编辑
摘要:
轮询的方法接收数据,效率低,套接字越多,需要的时间越长 代码:
阅读全文
posted @ 2019-08-27 17:08
BZ易风
阅读(171)
推荐(0)
编辑
posted @ 2019-08-27 15:42
BZ易风
阅读(200)
推荐(0)
编辑
posted @ 2019-08-26 13:32
BZ易风
阅读(336)
推荐(0)
编辑
posted @ 2019-08-23 18:26
BZ易风
阅读(286)
推荐(0)
编辑
posted @ 2019-08-22 17:49
BZ易风
阅读(249)
推荐(0)
编辑
摘要:
代码: 结果: 这种比较麻烦,如果源代码里面用到time.sleep()或者socket中的堵塞,一个一个改会很麻烦,所以有了gevent的补丁 代码: 结果不变:
阅读全文
posted @ 2019-08-22 17:12
BZ易风
阅读(201)
推荐(0)
编辑
摘要:
同yield一样 ,单线程,来回切换完成多任务,需要安装greenlet插件 pip install greenlet 代码: 结果:
阅读全文
posted @ 2019-08-22 16:40
BZ易风
阅读(165)
推荐(0)
编辑
摘要:
协程是并发,单线程,一次执行一个 来回切换 代码: 结果:
阅读全文
posted @ 2019-08-22 16:27
BZ易风
阅读(326)
推荐(0)
编辑
摘要:
调试 结果: send传的值不影响next()下次要取得值
阅读全文
posted @ 2019-08-22 15:26
BZ易风
阅读(218)
推荐(0)
编辑
posted @ 2019-08-22 10:57
BZ易风
阅读(181)
推荐(0)
编辑
摘要:
生成器能让看上去的一个函数暂停执行,通过next()或send()继续执行 1,如同列表生成方式,把[]换成() 结果: 2.函数 + yield
阅读全文
posted @ 2019-08-22 10:29
BZ易风
阅读(411)
推荐(1)
编辑
摘要:
1. nums = list() 2. nums = [x for x in range(10)] # [0,1,2,3,4,5,6,7,8,9] nums_2 = [x*2 for x in rang(10)] # [0,2,4,6,8,10,12,14,16,18]
阅读全文
posted @ 2019-08-22 10:17
BZ易风
阅读(760)
推荐(0)
编辑
摘要:
1,for循环 除了for循环能接受可迭代对象,list、tuple等也能接收 2.class 3.我能理解的class迭代器方式
阅读全文
posted @ 2019-08-22 10:00
BZ易风
阅读(279)
推荐(0)
编辑
摘要:
迭代器能减少内存空间实现循环。 方法1: 两个类可以改善成一个,只要有__iter__方法和__next__方法:
阅读全文
posted @ 2019-08-22 09:25
BZ易风
阅读(138)
推荐(0)
编辑
摘要:
1 import os 2 import multiprocessing 3 4 5 def copy_file(q,file_name,new_folder_name,old_folder_name): 6 with open(old_folder_name + "/" + file_name,"rb") as f1, open(new_folder_name + "/" + file_name
阅读全文
posted @ 2019-08-21 16:37
BZ易风
阅读(237)
推荐(0)
编辑
摘要:
1 import multiprocessing 2 3 4 def download_from_web(q): 5 """下载数据""" 6 # 模拟下载数据 7 data = [11,22,33,44] 8 9 # 向队列写入数据 10 for temp in data: 11 q.put(temp) 12 1...
阅读全文
posted @ 2019-08-21 16:03
BZ易风
阅读(173)
推荐(0)
编辑
posted @ 2019-08-21 14:59
BZ易风
阅读(191)
推荐(0)
编辑
摘要:
1 import socket 2 import threading 3 4 5 def send_msg(udp_socket,dest_ip,dest_port): 6 while True: 7 send_data = input("请输入要发送的内容:") 8 udp_socket.sendto(send_data.encode...
阅读全文
posted @ 2019-08-20 16:33
BZ易风
阅读(198)
推荐(0)
编辑
摘要:
结果: 此时进入到了死锁的状态,都在等对方先解开 避免死锁 程序设计时尽量避免(银行家算法) 添加超时时间 acquire(超时时间) 银行家算法 [背景知识] 一个银行家如何将一定数目的资金安全地借给若干个客户,使这些客户既能借到钱完成要干的事,同时银行家又能收回全部资金而不至于破产,这就是银行家
阅读全文
posted @ 2019-08-20 15:05
BZ易风
阅读(208)
推荐(0)
编辑
摘要:
因为多线程运行时要争夺资源,导致同事写入全局变量的时候回出现问题 所以用互斥锁可以解决这个问题 没有上锁的时候 结果: 如果按照预想的,结果应该是:2000000 出现原因--资源争夺 上锁后的情况 结果 test1抢先上锁,运行完毕后会解锁,然后test2接着上锁,得出结果:2000000
阅读全文
posted @ 2019-08-20 14:43
BZ易风
阅读(211)
推荐(0)
编辑
摘要:
单核CPU:时间片轮转 并行:CPU的个数大于等于任务数 真的多任务执行 并发:CPU的个数小于任务数 假的多任务 知识点: 多线程共享全局变量 创建线程的两种方法: 1.创建子线程方法 调用函数 Thread(target=函数名) 2,创建子线程类
阅读全文
posted @ 2019-08-20 09:23
BZ易风
阅读(413)
推荐(0)
编辑
posted @ 2019-08-19 16:13
BZ易风
阅读(458)
推荐(0)
编辑
摘要:
1 import socket 2 3 4 def main(): 5 # 1.常见套接字对象 6 tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 7 8 # 连接服务器 9 server_ip = input("请输入服务器ip:") 10 ...
阅读全文
posted @ 2019-08-19 11:03
BZ易风
阅读(132)
推荐(0)
编辑
摘要:
1 import socket 2 3 4 def main(): 5 # 创建套接字对象 6 tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 7 8 # 绑定端口 9 tcp_server_socket.bind(("192.168.199.88",...
阅读全文
posted @ 2019-08-19 11:02
BZ易风
阅读(409)
推荐(0)
编辑
摘要:
UDP,User Datagram Protocol):用户数据报协议,UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据报的方法。RFC 768 [1] 描述了 UDP。 UDP相当于写信,每一封信都要有地址和端口,也不安全,会丢失信息 TCP,Transmission Cont
阅读全文
posted @ 2019-08-18 12:18
BZ易风
阅读(104)
推荐(0)
编辑
摘要:
1 # 导入套接字包 2 import socket 3 4 5 def welcome(): 6 print("------欢迎进入UDP聊天器--------") 7 print("1.发送信息") 8 print("2.接收信息") 9 print("0.退出聊天器") 10 11 def send_msg(udp_socket): ...
阅读全文
posted @ 2019-08-18 12:11
BZ易风
阅读(501)
推荐(0)
编辑
摘要:
A类地址:10.0.0.0~10.255.255.255 B类地址:172.16.0.0~172.31.255.255 C类地址:192.168.0.0~192.168.255.255
阅读全文
posted @ 2019-08-18 10:33
BZ易风
阅读(201)
推荐(0)
编辑
摘要:
1精灵文件 plane_sprites.py 2.绘制图像主页面
阅读全文
posted @ 2019-08-15 16:04
BZ易风
阅读(3280)
推荐(0)
编辑
摘要:
在pycharm中导入pygame 1. 如果出现 AttributeError: module 'pip' has no attribute 'main'问题 找到安装目录下 helpers/packaging_tool.py文件,找到如下代码: 修改为如下,保存即可。
阅读全文
posted @ 2019-08-14 15:31
BZ易风
阅读(1185)
推荐(0)
编辑
摘要:
创建包 自动生成__init__.py文件 在__init__.py文件中把要导入的文件放进去 send_message.py recive_message.py中 需要导入的文件中 包的导入.py 运行结果 发布模块 在包的外部创建setup.py文件 setup.py中输入: 然后在终端中进入到
阅读全文
posted @ 2019-08-13 17:11
BZ易风
阅读(170)
推荐(0)
编辑
posted @ 2019-08-13 16:47
BZ易风
阅读(158)
推荐(0)
编辑
摘要:
1 class Animal: 2 def eat(self): 3 print("吃") 4 5 def drink(self): 6 print("喝") 7 8 def run(self): 9 print("跑") 10 11 def sleep(self): 12 p...
阅读全文
posted @ 2019-08-13 14:43
BZ易风
阅读(161)
推荐(0)
编辑
摘要:
1 class Game(object): 2 # 定义最高分 类属性 3 top_score = 0 4 5 # 初始化 6 def __init__(self,name): 7 self.name = name 8 9 10 # 游戏帮助 静态方法 11 @staticmethod 12 def ...
阅读全文
posted @ 2019-08-13 14:41
BZ易风
阅读(118)
推荐(0)
编辑
摘要:
1 class Dog(object): 2 def __init__(self,name): 3 self.name = name 4 5 def game(self): 6 print("%s 蹦蹦跳跳的玩耍" % self.name) 7 8 class XiaoTianDog(Dog): 9 def game(...
阅读全文
posted @ 2019-08-13 14:40
BZ易风
阅读(136)
推荐(0)
编辑
摘要:
1 class Women(): 2 def __init__(self,name): 3 # 名字 4 self.name = name 5 6 # 年龄 7 self.__age = 18 8 9 def __secret(self): 10 print("%s的年龄是:%d...
阅读全文
posted @ 2019-08-13 14:39
BZ易风
阅读(123)
推荐(0)
编辑
摘要:
1 class Gun: 2 """武器""" 3 def __init__(self,model): 4 5 # 枪的类型 6 self.model = model 7 # 弹药 8 self.bullen_counts = 0 9 10 def add_bullen(self,cou...
阅读全文
posted @ 2019-08-13 14:37
BZ易风
阅读(141)
推荐(0)
编辑
摘要:
1 class HouseItem(): 2 """家具""" 3 def __init__(self,name,area): 4 self.name = name 5 self.area = area 6 7 def __str__(self): 8 return ("%s的占地面积:%.2f" % (s...
阅读全文
posted @ 2019-08-13 14:36
BZ易风
阅读(161)
推荐(0)
编辑
摘要:
单个调用父类的方法: 结果: 父类会被多次调用,浪费大量的资源 MRO和super()用法: 运行结果: super总结:
阅读全文
posted @ 2019-08-13 14:34
BZ易风
阅读(188)
推荐(0)
编辑
摘要:
1 class MediaPlayer(object): 2 # 定义类属性记录单例对象引用 3 instance = None 4 5 # 定义对象初始化记录标记 6 init_flag = False 7 8 def __new__(cls, *args, **kwargs): 9 10 # 判断单例对象是否引用...
阅读全文
posted @ 2019-08-13 14:32
BZ易风
阅读(86)
推荐(0)
编辑