python8

编译和解释性语言的区别 

编译 典型的C C++ 编译完成之后是可执行文件。 机器码-底层(外文书,但是不懂中文,翻译成中文就可以看)

解释性语言----看一句英文书,让翻译解释一句

解释器写的代码便于移植。(python)
解释型语言还有Java JavaScript
Python是一门动态解释性的强类型定义语言
python的多线程是不能利用多核优势的 (python只有用一个线程)

为了利用多核处理器,看过很多文档,研究很多python相关技术,全部是失望的。 

1、Python:受限于GIL,被锁住只能用一个CPU核心。
2、Twisted:其实只有一个线程,何谈多核的利用。
3、Stackless:测试表明其多线程程序的速度比Python使用的native线程方式要快一点,不过一样没法用多核。
4、parallel Python:多进程方式,感觉封装的很龌龊,虽然翻译完了文档,但是仍然没有兴趣去使用。 

现在的办法: 

1、负载均衡:后面在多台服务器上启动多个Python程序。现在我开发的应用基本上都是用twistd启动的daemon程序。
2、C/S应用:各个进程间用多进程通信。
3、subprocess:使用这个模块,利用外部进程作worker,异步等待结果。 

不支持python3的 是Twisted 异步网络框架

cmd 下执行 print("hello world")
window 上 cmd下执行.py文件,需要:python hello.py程序
linux上执行.py文件,首先先赋权限  chmod 755 hello.py
然后执行 ./hello.py
在Linux 下,一定要加这个 #!/usr/bin/env python  声明解释器的

变量的定义:变量是用来存东西的,后来要用到它。
关键字不能声明为变量名如:as,break,def
变量名的第一个字符不能是数字

常量:π 在python没有常量这个概念。PIE 大写,可以改。
烽火戏诸侯
1001-5000  101-1000  1-100
1            1         1
ASCII、 Gb2312、  GBK 、unicode万国码(2个bytes) utf-8(en:1byte,  zh:3bytes) 这些编码是向下兼容的
GBK是兼容gb2312,gb2312是兼容ASCII
python3相比python2,一个特别明显的变化,字符集默认支持中文

python2中,先声明utf-8处理我这个字符集
-*- coding:utf-8 -*-
name="你好,世界"
print(name)
‘‘‘ 三个单引号 是注释多行,如果给它赋一个变量,就是打印多行

IndentationError就是缩进错误
把xx.py放到Site-package(第三方 可以自己写)下,然后import xx.py

SOCK

import socket,os

server = socket.socket() #获得socket实例

server.bind(("localhost",9999)) #绑定ip port
server.listen()  #开始监听
print("等待客户端的连接...")
while True:
    conn,addr = server.accept() #接受并建立与客户端的连接,程序在此处开始阻塞,只到有客户端连接进来...
    print("新连接:",addr )
    while True:
        print("等待接受指令")
        data = conn.recv(1024)
        if not data :
            print("客户端已断开:")
            break
        cmd_rec=os.popen(data.decode()).read()
        print ("before send",len(cmd_rec))
        if len(cmd_rec)==0:
            cmd_rec=" output..."
        conn.send(str(len(cmd_rec.encode())).encode())
        conn.send(cmd_rec)
        print("send done")

server.close()
#-*- coding:utf8 -*-
import  socket
client=socket.socket()
client.connect((‘localhost‘,9999 ))#端口号大于1024
while True:
    cmd=input(">>:").strip()
    if len(cmd)==0:
        continue
    else:
        client.send(cmd.encode("utf-8"))
        cmd_res_size=client.recv(1024)
        print ("sssssssssssssssss",cmd_res_size)
        print ("命令结束大小",cmd_res_size)
    recv_size=0
    recv_data=b‘‘
    while recv_size<int(cmd_res_size.decode()):
        data=client.recv(1024)
        recv_size +=len(data)
        recv_data +=data
    else:
        print("receive done",recv_size)
        print(recv_data.decode)
client.close()
时间: 2024-10-03 14:03:00

python8的相关文章

零基础学Python,这是阿里Python8年开发经验写给你的学习路线图

今天给大家分享一位前辈整理的一个Python web学习路线.这位前辈由于有编程基础,所以采用了自学Python的方式.学完后主要做后端开发.希望对你有所启发. 整理的一个 python web 学习路线,这基本就是笔者自学后做后端的学习路线.创一个小群,供大家学习交流聊天如果有对学python方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学python能够持之以恒python爱好群,如果你想要学好python最好加入一个组织,这样大家学习的话就比较方便

零基础学python-8.1 列表

列表是python里面最具灵活性的有序集合对象类型 它可以包含其他任何类型的对象:数字.字符串.甚至是列表 特点:可变对象.可在原处修改.可通过偏移值.分片.方法调用 特性: 1.任意对象的有序集合 2.通过偏移读取 3.可变长度.异构和任意嵌套 4.属于可变序列 5.对象引用数组:列表包含0个或者多个对象的引用 操作 解释 L=[] 一个空列表 L=[0,1,2,3] 四项:索引从0到3 L=['abc',['123','abc']] 嵌套自列表 L=list('abc') 可迭代项目的列表

零基础学python-8.2 列表的基本操作、迭代和解析

基本操作:使用+和* >>> a='http://blog.csdn.net/raylee2007' >>> aList=['123',123,123.0] >>> bList=['dd',a,['123','aaa']] >>> aList+bList ['123', 123, 123.0, 'dd', 'http://blog.csdn.net/raylee2007', ['123', 'aaa']] >>> 迭

Python-8 元组tuple

#1 特殊的列表:元组 元组中的元素不可改变 #2 创建.访问 >>> tuple1=(1,2,3) >>> tuple1=1,2,3 >>> tuple1=1,--元组的标志是 , #3 更新.删除 1)更新:--借助分片 >>> tuple1=1,2,3,4,5 >>> tuple1=tuple1[:2]+(3,)+tuple1[:2] >>> tuple1 (1, 2, 3, 1, 2)1)

零基础学python-8.6 字典的基本操作与原处修改

1.基本操作 1)通过键读取值 >>> d={'a':1,'b':2} >>> d['a'] 1 >>> d['b'] 2 >>> d {'a': 1, 'b': 2} >>> d={'a':1,'b':2,'c':3,'d':4} >>> d {'c': 3, 'd': 4, 'a': 1, 'b': 2} >>> 注意:字典d的输出不是按照一定的顺序 原因:因为字典是散列表,根

零基础学python-8.7 字典常用方法

1.列举字典的值.键与对 >>> d={'a':1,'b':2,'c':3,'d':4} >>> list(d.keys ()) ['c', 'd', 'a', 'b'] >>> list(d.values ()) [3, 4, 1, 2] >>> list(d.items ()) [('c', 3), ('d', 4), ('a', 1), ('b', 2)] >>> 2.获取相对位置 >>> d

零基础学python-8.3 列表的索引、分片和矩阵

索引: 注意:如果超出长度,则报错 如果索引为负数,则取数的方向反转 >>> aList=['123',123,123.0] >>> aList[0] '123' >>> aList[2] 123.0 >>> aList[-2] 123 >>> aList[-3] '123' >>> aList[3] Traceback (most recent call last): File "<

Python--8格式化

replacement 位置参数 >>> '{0} love {1}.{2}'.format('I', 'junjie','com') 'I love junjie.com' 关键字参数 >>> '{a} love {b}.{c}'.format(a='I', b='junjie', c='com') 'I love junjie.com' 位置参数加关键字参数  位置参数必须在关键字参数之前 >>> '{0} love {b}.{c}'.format

python8之类的起源与metaclass

一.概述 前面我们学习了大篇幅的关于类,通过类创建对象,那我们想知道这个类到底是怎么产生的呢?它的一切来源是什么?还有对象,对象是通过什么方法创建的,现在我们一头雾水,行的,下面我们就来揭开类的面纱,看看类和对象到底是怎么创建的,通过什么创建的. 二.类的起源 2.1 传统创建类 class Foo(object): def __init__(self,name): self.name = name f = Foo("shuaigaogao") f 是通过 Foo 类实例化的对象,其实

python8之类的特殊成员方法

一.概述 前面我们讲了类的方法,有普通方法,就是我们自己定义的方法,还有静态方法,类方法,属性方法,其实类还有另外一种方法,叫做类的特殊成员方法 二.类的特殊成员方法 2.1 __doc__ 说明:表示类的描述信息 class Dog(object): """此类是形容Dog这个类""" #类的描述信息 def __init__(self,name): self.name = name print(Dog.__doc__) #打印类的描述信息 #