1、外部子进程subprocess

python之subprocess模块详解--小白博客 - 夜风2019 - 博客园

python subprocess模块 - lincappu - 博客园

之前所说子进程的代码实现都是在主进程内部的,然而很多时候,子进程都是一个外部进程,我们需要控制子进程的输入与输出。

subprocess模块使我们可以非常方便地启动一个外部子进程,然后控制其输入与输出。

例子

通过在Python脚本中写代码,来达到和命令行运行相同的效果(相当于另外开了一个线程):

nslookup www.python.org

代码:

import subprocess
print('$ nslookup www.python.org')
r=subprocess.call(['nslookup','www.python.org'])
print('Exit Code',r)

如果进程还需要传入一些参数,可以通过communicate()方法输入。

2、异步IO、协程

异步IO 协程 - ShineLe - 博客园

目的是解决CPU与IO之间速度不匹配的问题。虽然多线程/多进程是解决方法之一,但是创建太多进程/线程,那么CPU就会花费较多时间用于进程切换。所以可以采用另一种方法异步IO——当代码需要执行一个耗时的IO时,它只发出IO指令而不等待IO结果,然后就去执行其他代码了。一段时间后,当IO返回结果时,再通知CPU进行处理。

我们按照普通代码的方式是无法写出异步IO模型的。

异步IO需要一个消息循环,在消息循环中,主线程不断重复“读取消息——处理消息”这一过程:

loop=get_event_loop()
while True:
event=loop.get_event()
process_event(event)

3、分布式进程

学习自:

Python之进程与线程 - 云--澈 - 博客园

分布式进程 - ShineLe - 博客园

Process可以分布到多台机器上,而Thread只能分布到同一台机器上的多个CPU中。

multiprocessing模块支持多进程,其中的managers子模块支持把多进程分布到多台机器上。

最新文章

  1. JMeter遇到的问题一:Error writing to server(转)
  2. Pythonn new-style class and old-style class
  3. kvm 网桥
  4. paper 62:高斯混合模型(GMM)参数优化及实现
  5. linux如何修改主机名
  6. C语言中调用Lua
  7. win8命令行
  8. selenium 使用随笔
  9. HDU1255覆盖的面积
  10. 以太坊开发DApp实战教程——用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台(一)
  11. 浅入javascript正则表达式的规则.
  12. JAVA WEB快速入门之环境搭建
  13. 【自动化测试】robot framwork的一点小发现
  14. oracle连表语法
  15. Requests卡死问题
  16. ES6之Promise的基本用法
  17. ConfigUtil读取配置文件工具类
  18. spring-cloud/spring-cloud-sleuth github 项目 mark
  19. 链接克隆、完整克隆 vmware 快照和克隆
  20. 关于DLNA

热门文章

  1. 不难懂-----redux
  2. PaperRead - A Shader Framework for Rapid Prototyping of GPU-Based Volume Rendering
  3. 【故障公告】数据库服务器 CPU 100% 引发全站故障
  4. JavaIo流入门篇之字节流基本使用。
  5. undefined index: php中提示Undefined ...
  6. web容器、sevlet容器、spring容器、springmvc容器之间的关系
  7. iOS App程序内多语言国际化实现 By HL
  8. Dockerfile镜像实例
  9. JS快速入门(二)
  10. Redis和数据库的数据一致性问题