• 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()
  • 相关阅读:
    定时任务
    ---Ubuntu 连接手机tethering
    ---thunar 文件浏览器的使用!
    ---recovery ui 修改
    ---wordpress 升级遇到的问题!
    ---BD PROCHOT
    ---安装/修复Ubuntu/Ach Linux efi 启动 !!!(包括双系统启动)
    ---sgdisk 分区表
    --- cache PV 丢失或损坏 怎么办
    ---lvm2分区修复问题!
  • 原文地址:https://www.cnblogs.com/xuehuahongmei/p/5876234.html
Copyright © 2020-2023  润新知