• python多线程


    1 多进程

    # 多进程,import osimport timefrom multiprocessing import Process# 启动时必须在 if __name__ 判断下,windows 必须,其他 无限制# =================================================# def func(args):#     print("子进程:",os.getpid())#     print("子进程的父进程:",os.getppid())#     time.sleep(10)#     print("子进程结束")# if __name__ =="__main__":#     p = Process(target=func,args=(1,)) # 注册 并传入元祖 元祖有一个参数要加逗号#     # p是进程对象#     p.start() # 开启子进程#     print("主进程:", os.getpid())#     print("主进程的父进程:",os.getppid()) # cmd 或者是 pycharm# 生命周期#   主进程长:自己执行完结束#   子进程长:等待子进程结束# =================================================# 多进程中的方法# join# def fun(arg1,arg2):#     print('*'*arg1)#     # time.sleep(5)#     print('*'*arg2)# if __name__ == "__main__":#     p = Process(target=fun,args=(10,20))#     p.start()#     # p.join() # 感知子进程结束#     # time.sleep(1)#     print("all is stop")##     print("最后的语句")#     os.walk(r"目录") # 返回 文件夹中文件名字# =================================================# def fun():#     print("xxx")# if __name__ == "__main__":#     for i in range(10):#         p = Process(target=fun)#         p.start()#         p.join() # 停止for循环 进程结束后继续#         print("for")#     print("主进程")# =================================================# 第二种方法# class MyProcess(Process):#     def __init__(self,args):#         super().__init__() # 若要传递参数,需要调用父类init##     def run(self):#         print("子进程",self.__dict__)#         print(self.pid)# if __name__ == "__main__":#     print("主进程:",os.getpid())#     p1 = MyProcess()#     p1.start()# =================================================# 进程之间数据是隔离,命名空间不通# def fun():#     global n#     n= 0#     print("pid:%s" %os.getpid(),n)# if __name__ == "__main__":#     n=100#     p = Process(target=fun)#     p.start()#     p.join()#     print(n) # -->100# =================================================# 多进程tcp连接# import socket# # 客户端# sk = socket.socket()# sk.connect(("127.0.0.1",8080))# sk.send('N好'.encode("utf8"))# msg = sk.recv(1024).decode("utf8")# print(msg)# sk.close()## # 服务端# def server(conn):#     ret= "你好".encode("utf8")#     conn.send(ret)#     msg = conn.recv(1024).decode("utf8")#     print(msg)#     conn.close()## sk = socket.socket()# sk.bind(("127.0.0.1",8080))# sk.listen()# if __name__ == "__main__":#     while True:#         conn, addr = sk.accept()#         p = Process(target=server,args=(conn,))#         p.start()# =================================================# 守护进程# 默认情况 父进程 等待子进程结束# p.daemon = Truestart前,设置为守护进程,守护进程随父进程(代码执行完毕)结束#   若父进程在等待 子进程(非守护进程时) ,若父进程代码完毕,守护进程应该结束# p.is_alive() 判断进程是否存活# p.terminate() 终止进程# =================================================# 锁# 未加锁实例:# 火车票import jsonimport timefrom multiprocessing import Process# def show(i):#     with open('ticket') as f:#         dic = json.load(f)#     print('余票: %s'%dic['ticket'])​
  • 相关阅读:
    vue开发-零基础从源码开始解读一个智慧园区项目
    基础15:npm、yarn、pnpm
    癌症研究科学家涉嫌伪造图片,4篇论文被撤稿,老板全身而退
    一个发誓不用Java的程序员,不得不在太空中调试Lisp
    Vue-cli、devServer + http-proxy + 测试服务 + easy-mock 实现开发环境接口“负载”
    Vue 如何监听 localstorage的变化
    19.声明式事务的事务隔离级别和事务传播行为
    android源码设计模式学习笔记(一)
    开发上门送桶装水小程序要考虑哪些业务场景
    ECMAScript6(ES6)基础语法
  • 原文地址:https://blog.csdn.net/qq_34272704/article/details/127736114