再次复习python

  • python文件操作
    •   r  只读
    •        w 只写(同名直接覆盖)
    •        a 是w的升级版,实在同名文件中继续写,不会重写文件
    •       r + 可读可写    
  • 序列化:变量都存在内存中,如果将变量转换成可储存可传输的过程就叫序列化;
    • import json
      
      d = dict(name='fan', age=13)
      f = json.dumps(d)   #序列化为json对象
      print(type(f))   #<class 'str'>
      g = json.loads(f)   #反序列化为python识别的对象
      print(g)  #{'name': 'fan', 'age': 13}
      print(type(g))   #<class 'dict'>
      
      
      class Student(object):
          def __init__(self, name, age, score):
              self.name = name
              self.age = age
              self.score = score
      
      
      s = Student('fan', 28, 99)
      
      
      def myfun(stu):
          return {
              'name': stu.name,
              'age': stu.age,
              'score': stu.score
      
          }
      
      
      print(json.dumps(s, default=myfun))   #序列化python实例时,无法识别实例,可以通过指定函数转换成json可以识别的字典格式

       

  • 多进程:操作系统进行资源分配和调度的基本单位。
    •   
      from multiprocessing import Process
      
      import os
      
      
      def print_world(x):
          print('%s子进程来执行这个工作id:%s' % (x, os.getpid()))
          print('父进程id为%s' % os.getppid())
      
      
      if __name__ == '__main__':
          print('主进程id:%s' % os.getpid())
          p = Process(target=print_world, args=('test',))
          print('子进程开始运行')
          p.start()
          p.join()
          print('end son')

       

    • Pool进程池
      from multiprocessing import Pool
      import os,time, random
      
      
      def pri_sub(x):
          print('run task %s:%s'%(x, os.getpid()))
          start = time.time()
          time.sleep(random.random() * 3)
          end = time.time()
          print('task %s runs %0.2f seconds'%(x,(end - start)))
      
      
      if __name__ == '__main__':
          print('parend process %s'%os.getpid())
          p = Pool(4)
          for i in  range(5):
              p.apply_async(pri_sub,args=(i,))  #异步创建子进程
          print('等待子进程结束')
          p.close()
          p.join()
          print('所有的子进程结束')

       

    • subprocess模块可以让我们非常方便地启动一个子进程,然后控制其输入和输出
      import subprocess     #创建一个子进程去执行 命令  ipconfig
      
      subprocess.call('ipconfig')

       

    • 进程通信:Queue、Pipes
  • 多线程:线程是CPU调度的最小单位
posted @ 2020-02-09 20:21  Tarzen  阅读(124)  评论(0编辑  收藏  举报