Python进程
(先分享一个Python在线编程的网站http://www.pythontip.com/coding/skulpt-interactive/)
(本文为原创作品,欢迎转载,转载请注明出处)
一、概念
进程说白了就是一段运行的程序,操作系统给这段正在运行的程序分配内存、CPU、磁盘、GPU资源等。
系统中运行的进程:

二、python中使用进程实现多任务
1、使用fork创建进程:
在Unix/Linux系统中,使用Python中OS模块下的fork函数可以创建出子进程实现多任务。
我们先通过代码来看看在Python中使用进程实现多任务,代码如下:
import os
import time
res = os.fork()
if(res==0):
while True:
print('------1--------')
time.sleep(1)
else:
while True:
print('------2--------')
time.sleep(1)
代码解析与说明:
可以将整段代码看作为主进程,当代码运行到os.fork()的时候主进程会创建出一个子进程,前面我们说过进程就是一段运行着的程序,子进程中的程序相当于是从父进程拷贝了一份出来一样。此时主进程跟子进程同时运行代码,而子进程中os.fork()的返回值为0,而主进程中os.fork()的返回值为子进程的进程id号,通过if -else语句就同时能执行两个死循环语句了。
图解:


2、使用multiprocessing创建进程:
有的同学可能就要问了使用fork只能在Linux/Unix系统中实现进程的创建,那么我的电脑是Windows的怎么办呢?肯定是有办法的了。可以使用multiprocessing模块创建进程,而且multiprocessing既可以在Unix/Linux中使用又可以在Windows中使用。
先撸一段代码吧:
from multiprocessing import Process import time # 子进程要执行的代码(封装成一个函数)
def proc(): while True: print('------1--------') time.sleep(1) if __name__=='__main__': p=Process(target=proc) p.start() while True: print('------2--------') time.sleep(1)

三、总结
虽然通过进程可以实现多任务,但是就像上面提到的一样,操作系统会为每个进程分配内存、Cpu等资源,滥用进程去实现多任务并不是一件明智的事情,那么用什么去实现多任务呢?答案是线程和协程,如果想知道怎么实现就请关注我吧,我会在以后的博文说明怎么通过线程和协程实现多任务。
Python进程的更多相关文章
- python——进程基础
我们现在都知道python的多线程是个坑了,那么多进程在这个时候就变得很必要了.多进程实现了多CPU的利用,效率简直棒棒哒~~~ 拥有一个多进程程序: #!/usr/bin/env python #- ...
- 使用gdb调试Python进程
使用gdb调试Python进程 有时我们会想调试一个正在运行的Python进程,或者一个Python进程的coredump.例如现在遇到一个mod_wsgi的进程僵死了,不接受请求,想看看究竟是运行到 ...
- python进程、线程、协程(转载)
python 线程与进程简介 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资 ...
- Python进程、线程、协程详解
进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...
- python进程池剖析(一)
python中两个常用来处理进程的模块分别是subprocess和multiprocessing,其中subprocess通常用于执行外部程序,比如一些第三方应用程序,而不是Python程序.如果需要 ...
- python——进程、线程、协程
Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env pytho ...
- python/进程线程的总结
python/进程线程的总结 一.进程和线程的描述: 进程:最小的资源管理单位 线程:最小的执行单位 执行一个进程时就默认执行一个线程(主线程) 进程和线程的工作方式: 串行: 假如共有A.B.C任务 ...
- python 进程介绍 进程简单使用 join 验证空间隔离
一.多道程序设计技术(详情参考:https://www.cnblogs.com/clschao/articles/9613464.html) 所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行 ...
- Python 进程之间共享数据
最近遇到多进程共享数据的问题,到网上查了有几篇博客写的蛮好的,记录下来方便以后查看. 一.Python multiprocessing 跨进程对象共享 在mp库当中,跨进程对象共享有三种方式,第一种 ...
- python进程、多进程
进程: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当 ...
随机推荐
- WordPress制作一个首字母排序的标签页面
很早就想制作这样一个页面了,废话不多说, 先看看效果:传送门 在网上找了很多的代码,试了很久,修改了一些代码,最终就达到了现在的效果. 实现方法:(里面增加了缓存功能,打开页面更快,对数据进行了缓存, ...
- Git分支(5/5) -- 解决合并的冲突
如果两个分支上都对同一个文件进行了修改, 那么就有可能发生冲突. 首先创建一个分支, 并切换到该分支上: 然后修改index.html, 修改几个地方吧. 然后查看状态, 并commit: 然后切换到 ...
- Cannot resolve taglib with uri http://java.sun.com/jsp/jstl/core
问题 <Spring 实战>第5章,在 IDEA 中 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" pre ...
- spring Boot+spring Cloud实现微服务详细教程第二篇
上一篇文章已经说明了一下,关于spring boot创建maven项目的简单步骤,相信很多熟悉Maven+Eclipse作为开发常用工具的朋友们都一目了然,这篇文章主要讲解一下,构建spring bo ...
- 插入排序—直接插入排序(Straight Insertion Sort)
基本思想: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表.即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插插入到已入,直至整个序列有序为止. 要点: ...
- 常用数据库连接池 (DBCP、c3p0、Druid) 配置说明
1. 引言 1.1 定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库 ...
- Nginx+Tomcat 配置负载均衡集群
一.Hello world 1.前期环境准备 准备两个解压版tomcat,如何同时启动两个tomcat,请看我的另一篇文章<一台机器同时启动多个tomcat>. nginx官网下载解压版n ...
- 【Django】 视图层说明
[Django视图层] 视图层的主要工作是衔接HTTP请求,Python程序和HTML模板,使他们能够有机互相合作从模型层lou到数据并且反馈.说到视图层的工作就有以下几个方面要说 ■ URL映射 对 ...
- 【Python】正则表达式re
re 正则表达式(regular expression)这玩意儿多nb就不用说了,python用re模块来支持正则 首先是一些正则表达式的概念 1. 通配符 . 2. 多字符选择 [...] [abc ...
- 数据库 --> sqlite3之api使用
创建 if [ ! -d /opt/dbspace ] then mkdir /opt/dbspace fi if [ -f /opt/dbspace/.memo.db ] then rm /opt/ ...