136 python|第八部分:并发网络编程网络编程上

Posted 缓缓而行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了136 python|第八部分:并发网络编程网络编程上相关的知识,希望对你有一定的参考价值。

:查看Linux系统下计算机的IP地址。

ping [ip] : 查看计算机的连通性

如果能够ping通,说明两个ip地址可以互相传输数据,time后的数字表示= = = = = = True: data,addr = udp_sock.recvfrom(1024)    udp_sock.sendto(b msg = input( udp_sock.sendto(msg.encode(),ADDR) break data,addr = udp_sock.recvfrom(1024) print( data == udp_sock.sendto(socket * word = input( word: sock.sendto(word.encode(),ADDR) data,addr = sock.recvfrom( print( 套接字 数据库查询 sql = result = result[ sock = socket(AF_INET, SOCK_DGRAM) sock.bind( sock word, addr = mean = __name_== query = QueryServer(host= query.query()#调用query方法    query.close()#关闭数据库

2.3 UDP套接字特点


1.可能会出现数据丢失的情况
2.传输过程简单,容易实现
3.数据以数据包形式表达传输
4.数据传输相对于TCP效率较高


下篇预告:网络编程(下)



                                                  


参考资料


[1] 互联网的历史(1969-2009)
https://www.cnblogs.com/hnrainll/archive/2011/08/02/2125000.html
[2] OSI七层模型基础知识及各层常见应用
https://blog.csdn.net/qq_16093323/article/details/79582554



花样早餐展

138 python|第八部分:并发网络编程多任务编程上--进程

-ef | grep 进程关键字
显示指定用户信息
  • -u 用户名
    显示进程树形结构

  • print("The old process") sleep(2) print("func01 over") sleep(3) print("func02 over") print("error") func01() func02()
    终端运行:

    print("error") print("child pid:",os.getpid())#获取当前进程(子进程)的进程号 print("parent pid", os.getppid())#获取父进程的进程号 print("parent pid",os.getpid())#获取当前进程(父进程)的进程号 print("child pid:",pid)#父进程的返回值是子进程的 pid
    执行结果:

    sleep(1)#给子进程设置等待时间,确保父进程先结束 print("child pid:",os.getpid())#获取当前进程(子进程)的进程号 print("parent pid", os.getppid())#获取父进程的进程号



    2.僵尸进程
    一个进程创建子进程,如果pid < print(pid== print( os._exit( p,status = os.wait() print( print( print( sleep(2) print("func01") sleep(3) print("func02") print("error") pid_0 = os.fork()#二级子进程 if pid_0 ==0: func01()#执行二级子进程 else:#一级子进程 os._exit(0)#在创建完二级子进程后直接退出 os.wait() func02()#等一级子进程结束,执行这句
    终端运行:大概花费3秒就能结束运行,而且不会产生僵尸进程


    3.通过信号处理子进程退出
    原理:子进程退出时会发送信号给父进程,如果父进程忽略子进程的信号,系统就会自动处理子进程退出。
    方法:使用signal模块在父进程创建子进程前写出以下语句:
    import signal
    print("error") print("child process",os.getpid()) os._exit(0) while True: pass
    运行:


    multiprocessing Processostime sleep sleep( print(os.getppid(), sleep( print(os.getppid(), sleep( print(os.getppid(),th [fun1,fun2,fun3]: p = Process(target=th) jobs.append(p) p.start()i jobs: i.join()
    运行:


    for i in range(3): sleep(sec) print("I\'m %s"%name) print("I\'m working...")multiprocessing Processos fr = open(filename, fw = open( n = size // fw.write(fr.read(n)) fr.close() fw.close() fr = open(filename, fw = open( fr.seek(size// fw.write(fr.read()) fr.close() fw.close() print( print( __name_== p = MyProcess( p.start() p.join()

    下面代码 start_time = time.time() res=f(*args,**kwargs) end_time=time.time() print(% (f.__name_ res wrapper n<= False i range( n % i == False True prime = [] i range( ifprime(i) prime.append(i) sum(prime) = = i range( ifprime(i): sum( prime = [] processes = [] i range( p = prime2(prime,i,i+ p.start() processes.append(p) [process.join() process processes] prime = [] processes = [] i range( f = prime2(prime,i,i+ f.start() processes.append(f) [process.join() process processes]__name_== use10_multi_process()给func函数以字典形式位置传参
    事件函数
    multiprocessing Pool
    time sleepos sleep( print(os.getpid(), msgi range( msg = r = pool.apply_async(func=fun,args=(msg,))multiprocessing Pooltime sleep sleep( print( n * n当block为True表示超时时间
    注:block和timeout二选一
    get([block,timeout])
    multiprocessing Process,Queuetime sleep i range( sleep( q.put( print(q.get(timeout= return
    p1 = Process(target=bar)#进程1p2 = Process(target=foo)#进程2p1.start()#开启进程1p2.start()#开启进程2p1.join()#回收进程1p2.join()#回收进程2

    实例:
  • """使用进程池拷贝一个目录及目录中的所有内容目录中的内容均为普通文件;进程池中执行的每个进程事件拷贝一个文件实时显示拷贝的百分比拷贝目录:/home/huanhuan/myfile/target"""

    运行:定义main函数后
    此时创建了一个新的空目录target_备份,里面还没有原target中的文件:


    原目录中的文件此时已全部被拷贝到新目录target_备份中:
    创建消息队列:
    计算目录大小:
    显示拷贝文件的百分比:

    注:1.使用fork函数和multiprocessing包两种方式实现的简单聊天室功能,可以在公众号后台输入“聊天室f”和“聊天室m”获取代码;2.上面这个实例(拷贝目录)的代码可以在后台输入“拷贝目录”获取。


    ▍下期预告:线程





    参考资料


    [1] multiprocessing --- 基于进程的并行
    https://docs.python.org/zh-cn/3/library/multiprocessing.html
    [2] python多进程的理解 multiprocessing Process join run
    https://www.cnblogs.com/lipijin/p/3709903.html
    [3] Python中的进程与multiprocessing模块(包)
    https://blog.csdn.net/qq_25171075/article/details/81871537
    [4] Python进程和线程,1个台机子多只手干活的秘籍!
    https://mp.weixin.qq.com/s/eIAd107SY51jvb-NLIIbIA
    [5] Python之进程
    https://www.cnblogs.com/clschao/articles/9629392.html
    [6] Python多进程编程
    https://www.cnblogs.com/kaituorensheng/p/4445418.html


    花样早餐展

    以上是关于136 python|第八部分:并发网络编程网络编程上的主要内容,如果未能解决你的问题,请参考以下文章

    139 python|第八部分:并发网络编程多任务编程下--线程

    138 python|第八部分:并发网络编程多任务编程上--进程

    第八章 网络的时代—网络开发

    Python之旅.第八章.网络编程

    Python开发第八篇:网络编程

    Python之路第八篇--Python基础之网络编程

    (c)2006-2024 SYSTEM All Rights Reserved IT常识