• 贵州省社科规划办与贵州日报社合作推出“文化贵州”专栏 2019-03-20
  • 就算不为了世界杯,俄罗斯也有那么多时髦好去处值得你飞去 2019-03-20
  • 山西休彩11选五走势图:Python I/O与进程的详细讲解

    山西体彩11选5直选遗漏 www.caxru.com  更新时间:2019年03月08日 11:58:36   作者:沙沙罗曼   我要评论

    今天小编就为大家分享一篇关于Python I/O与进程的详细讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    I/O

    with语句

    with context_expression [as target(s)]:
      with-body

    context_expression返回值遵从上下文管理协议,包含__enter__()__exit__()方法,as语句的target(s)得到的是__enter__()返回值,执行with-body后会调用上下文管理器的__exit__()方法,使用with语句,可以减轻某些代码编写负担,比如文件读写。

    读文件

    try:
      f = open('/path/to/file', 'r', encoding='utf8', errors='ignore')
      print(f.read(1024))
    finally:
      if f:
        f.close()
    # 使用with语句
    with open('/path/to/file', 'r') as f:
      print(f.read(1024))

    open()方法打开文件模式,默认以utf8格式读取,添加后缀'b'(rb、wb)表示以二进制方式读取,mode有以下几种:

    StringIO和BytesIO

    StringIO将string按照文件的方式读取和写入,BytesIO将bytes按照文件的的方式读取和写入。

    OS

    通过OS???,与操作系统信息交互,如创建、移动、列出文件等等。

    序列化

    通过内置??閜ickle,实现序列化与反序列化,使用json??橥瓿蒍SON数据的序列化和反序列化。

    import pickle
    d = dict(name = 'sha', age = 26)
    # 将序列化内容写入文件
    with open('dump', 'wb') as f:
      pickle.dump(d, f)
    # 从文件中读取序列化内容
    with open('dump', 'rb') as f:
      d = pickle.load(f)
    print(d) # {'name': 'sha', 'age': 26}

    进程与线程

    进程

    Python调用一次进程fork()会有两次返回,子进程永远返回0,父进程中返回子进程ID。os.fork()不支持windows,multiprocessing??槭强缙教ò姹镜亩嘟棠??。

    import os
    pid = os.fork() # pid后的代码会在两个进程中分别执行,通过pid值不同判断父子
    if pid == 0:
      print('exec in child process')
    else:
      print('exec in parent process')
    # exec in parent process
    # exec in child process

    进程池

    from multiprocessing import Pool
    def say(x):
      print(x)
    if __name__ == '__main__':
      p = Pool(4)
      for i in range(5):
        p.apply_async(say, args=(i,))
      p.close()
      p.join()

    子进程

    import subprocess
    print('$ nslookup amsimple.com')
    r = subprocess.call(['nslookup', 'amsimple.com'])
    print('Exit code:', r)

    进程间通信

    进程间通信通过Queue与Pipes实现,父进程创建Queue传递给子进程。

    线程

    Python提供两个??開thread与threading,前者是低级??楹笳呤歉呒赌??,对_thread进行了封装。

    启动一个线程就是把一个函数传入并创建Thread实例,然后调用start()开始执行:

    import threading
    # 新线程执行的代码:
    def say():
      print('%s say hello' % threading.current_thread().name)
    t = threading.Thread(target=say, name = 'SayThread')
    t.start()
    t.join()

    threading.current_thread()返回但前运行线程的实例,主线程名MainTreed,子线程名在创建时指定。

    通过threading.Lock()获取锁,某些需要线程安全的操作,先通过acquire()获取锁,通过release()释放锁。

    Python中的线程因为GIL锁,无法真正利用多核。

    通过ThreadLocal实现线程级的全局变量,不同线程间相互不影响。

    import threading
    th_local = threading.local() # th_local会跟线程绑定,不同线程看到的是不同对象

    分布式进程

    managers??橐揽客缤ㄐ?,可以把多进程分布到多台机器上。

    正则

    通过'r'前缀定义正则字符串,通过re??樽稣蚱ヅ涞炔僮?。

    import re
    s = r'^[a-zA-Z0-9_-][email protected][a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$'
    re.match(s, '[email protected]')

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

    相关文章

    • python实现简单中文词频统计示例

      python实现简单中文词频统计示例

      本篇文章主要介绍了python实现简单中文词频统计示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
      2017-11-11
    • Python实现对PPT文件进行截图操作的方法

      Python实现对PPT文件进行截图操作的方法

      这篇文章主要介绍了Python实现对PPT文件进行截图操作的方法,涉及Python操作幻灯片的相关技巧,非常具有实用价值,需要的朋友可以参考下
      2015-04-04
    • Python subprocess库的使用详解

      Python subprocess库的使用详解

      这篇文章主要介绍了Python subprocess库的使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
      2018-10-10
    • python在windows和linux下获得本机本地ip地址方法小结

      python在windows和linux下获得本机本地ip地址方法小结

      这篇文章主要介绍了python在windows和linux下获得本机本地ip地址方法,实例分析了Python获得IP地址的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
      2015-03-03
    • Python中绑定与未绑定的类方法用法分析

      Python中绑定与未绑定的类方法用法分析

      这篇文章主要介绍了Python中绑定与未绑定的类方法用法,结合实例形式分析了未绑定的类方法与绑定的实例方法相关使用技巧,需要的朋友可以参考下
      2016-04-04
    • 3分钟学会一个Python小技巧

      3分钟学会一个Python小技巧

      Python时间日期转换在开发中是非常高频的一个操作,你经?;嵊龅叫枰址怀?datetime 或者是反过来将 datetime 转换成字符串,今天小编给大家带来了一个Python小技巧,感兴趣的朋友一起看看吧
      2018-11-11
    • Python3结合Dlib实现人脸识别和剪切

      Python3结合Dlib实现人脸识别和剪切

      本篇文章给大家详细分析了Python3结合Dlib实现人脸识别和剪切这个技术,对此有兴趣的朋友参考学习下。
      2018-01-01
    • python获取Linux下文件版本信息、公司名和产品名的方法

      python获取Linux下文件版本信息、公司名和产品名的方法

      这篇文章主要介绍了python获取Linux下文件版本信息、公司名和产品名的方法,主要涉及了pefile??榈挠梅?需要的朋友可以参考下
      2014-10-10
    • python3学生名片管理v2.0版

      python3学生名片管理v2.0版

      这篇文章主要为大家详细介绍了python3学生名片管理v2.0版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
      2018-11-11
    • python使用str & repr转换字符串

      python使用str & repr转换字符串

      str() 是将 数值 转成字符串 repr() 是将一个对象 转成字符串 显示 看明白了么:str()是将一个对象转化成str对象 repr()是将一个对象可视化,使用字符串输出,使编程人员看到其的内部结构
      2016-10-10

    最新评论

  • 贵州省社科规划办与贵州日报社合作推出“文化贵州”专栏 2019-03-20
  • 就算不为了世界杯,俄罗斯也有那么多时髦好去处值得你飞去 2019-03-20