线程:是最小的执行单元,而进程由至少一个线程组成!在多道程序环境下,程序的执行属于并发执行,此时他们失去其封闭性,并具有间断性,UI及其运行结果不可再现性的特点,因此,决定了同学行的程序是不能参加并发执行的,否则就失去了意义!为了是程序可以并发执行,人们引入了进程!进程是程序的一次执行进程是一个程序及其数据在处理机上顺序执行时所发生的活动进程是具有独立功能的程序在一个数据集合上运行的过程,他是系统进行资源分配和调度的一个独立单位总而言之:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位线程:为了减少程序在迸发执行是付出的时空开销,使os具有更好的并发性

1、multiprocessing:提供跨平台的多进程支持

    Python中有multiprocessing模块提供跨平台的多进程支持:

from multiprocessing import Process
import os# 子进程要执行的代码
def run_proc(name):print 'Run child process %s (%s)...' % (name, os.getpid())if __name__=='__main__':print 'Parent process %s.' % os.getpid()p = Process(target=run_proc, args=('test',))print 'Process will start.'p.start()    #启动进程p.join()     #等待子进程结束后再继续往下运行,通常用于进程间的同步。一个过后执行下一个print 'Process end.'

多线程:(启动多个线程,列表存储,计算总时间)

import threading
import time
def run(n):print("task ",n )time.sleep(2)print("task done",n)
start_time = time.time()
t_objs = [] #存线程实例
for i in range(5):t = threading.Thread(target=run,args=("t-%s" %i ,))t.start()t_objs.append(t) #为了不阻塞后面线程的启动,不在这里join,先放到一个列表里
for t in t_objs: #循环线程实例列表,等待所有线程执行完毕
    t.join()
print("----------all threads has finished...")
print("cost:",time.time() - start_time)
# task  t-0
# task  t-1
# task  t-2
# task  t-3
# task  t-4
# task done t-0
# task done t-1
# task done t-2
# task done t-3
# task done t-4
# ----------all threads has finished...
# cost: 2.0021145343780518

守护线程:

import threading
import time
def run(n):print("task ",n )time.sleep(2)print("task done",n,threading.current_thread())#打印当前线程
start_time = time.time()
t_objs = [] #存线程实例
for i in range(5):t = threading.Thread(target=run,args=("t-%s" %i ,))t.setDaemon(True) #把当前线程设置为守护线程,主线程消失守护线程强制退出,不用等join中所有线程结束!经常用于打开文件,监听端口
    t.start()t_objs.append(t) #为了不阻塞后面线程的启动,不在这里join,先放到一个列表里
for t in t_objs: #循环线程实例列表,等待所有线程执行完毕
    t.join()
time.sleep(2)
print("----------all threads has finished...",threading.current_thread(),threading.active_count())
print("cost:",time.time() - start_time)

View Code

线程锁:解决不同线程同时修改数据!

import threading
import time
def run(n):lock.acquire()#锁global  numnum +=1time.sleep(1)lock.release()
lock = threading.Lock()#开锁
num = 0
t_objs = [] #存线程实例
for i in range(5):t = threading.Thread(target=run,args=("t-%s" %i ,))t.start()t_objs.append(t) #为了不阻塞后面线程的启动,不在这里join,先放到一个列表里for t in t_objs: #循环线程实例列表,等待所有线程执行完毕
    t.join()print("----------all threads has finished...",threading.current_thread(),threading.active_count())print("num:",num)
# ----------all threads has finished... <_MainThread(MainThread, started 6872)> 1
# num: 5

线程Event案例--红绿灯(不同线程之间同步执行控制,红-》停)

import time
import threading
event = threading.Event()
def lighter():count = 0event.set() #先设置绿灯while True:if count >5 and count < 10: #改成红灯event.clear() #把标志位清了print("\033[41;1mred light is on....\033[0m")elif count >10:event.set() #变绿灯count = 0else:print("\033[42;1mgreen light is on....\033[0m")time.sleep(1)count +=1def car(name):while True:if event.is_set(): #代表绿灯print("[%s] running..."% name )time.sleep(1)else:print("[%s] sees red light , waiting...." %name)event.wait()print("\033[34;1m[%s] green light is on, start going...\033[0m" %name)light = threading.Thread(target=lighter,)
light.start()
car1 = threading.Thread(target=car,args=("Tesla",))
car1.start()
# [Tesla] running...
# [Tesla] running...
# green light is on....
# green light is on....
# [Tesla] running...
# green light is on....
# [Tesla] running...

 

转载于:https://www.cnblogs.com/zlz-leidaxia/p/7790524.html

day09-线程与进程相关推荐

  1. iOS开发 - 线程与进程的认识与理解

    进程: 进程是指在系统中正在运行的一个应用程序,比如同时打开微信和Xcode,系统会分别启动2个进程; 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内; 线程: 一个进程要想执行任务 ...

  2. Java多线程001——一图读懂线程与进程

    本博客 猫叔的博客,转载请申明出处 前言 本系列将由浅入深,学习Java并发多线程. 一图读懂线程与进程 1.一个进程可以包含一个或多个线程.(其实你经常听到"多线程",没有听过& ...

  3. 为什么校招面试中总被问“线程与进程的区别”?我该如何回答?

    作者 | 宇宙之一粟 责编 | 徐威龙 出品 | AI 科技大本营(rgznai100) 进程与线程?(Process vs. Thread?) 面试官(正襟危坐中):给我说说"线程&quo ...

  4. 进程、线程、进程池、进程三态、同步、异步、并发、并行、串行

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 来源:cnblogs.com/songhaixing/p/1 ...

  5. 写给小白看的线程和进程,高手勿入

    计算机的核心是CPU,它承担了计算机的所有计算任务,CPU就像一个工厂,时刻在运行着,而操作系统管理着计算机,负责任务的调度.资源的分配和管理. 图片来源于网络 进程和线程都是计算机操作系统中的基本概 ...

  6. php 进程 线程,php进程还是线程

    php编程常见的进程和线程 一.什么是进程 (推荐学习:PHP视频教程) 进程是程序执行是的一个实例,进程能够分配给cpu和内存等资源.进程一般包括指令集和系统资源,其中指令集就是你的代码,系统资源就 ...

  7. 线程VS进程,多线程VS多进程,并行VS并发,单核cpuVS多核cpu

    目录 概论 进程VS线程 并发VS并行 多线程VS多进程 总结 概论 程序是为完成特定任务.用某种语言编写的组指令的集合.即指一段静态的代码,静态对象. 进程是程序的次执行过程, 或是正在运行的 一个 ...

  8. 编程思想之多线程与多进程——以操作系统的角度述说线程与进程

    原文:http://blog.csdn.net/luoweifu/article/details/46595285  作者:luoweifu  转载请标名出处 什么是线程 什么是线程?线程与进程与有什 ...

  9. iOS进阶之底层原理-线程与进程、gcd

    线程与进程 线程的定义 线程是进程的基本单位,一个进程的所有任务都在线程中执行 进程要想执行任务,必须的有线程,进程至少要有一条线程 程序启动默认会开启一条线程,也就是我们的主线程 进程的定义 进程是 ...

  10. python 协程、进程、线程_Python进程、线程、协程之间的关系

    一.从操作系统角度 操作系统处理任务, 调度单位是 进程 和 线程 . 1.进程: 表示一个程序的执行活动 (打开程序.读写程序数据.关闭程序) 2.线程: 执行某个程序时, 该进程调度的最小执行单位 ...

最新文章

  1. 文件管理器_苹果超强文件管理器,秒变安卓?
  2. JavaSE(三)——数组及继承
  3. Linux 中yumdownloader 和 repotrack:下载yum软件离线环境的rpm依赖包
  4. php中有size_t函数吗,lSize 命令/方法/函数
  5. linux设备驱动归纳总结(五):4.写个简单的LED驱动
  6. Photoshop 保存PNG格式交错和不交错有差别
  7. phoenix Explain Plan 翻译
  8. C语言的5种存储类以及关键字volatile、restrict
  9. 【《系统集成项目管理工程师》必备100题】
  10. 平面变压器大概价格_莆田大型变压器规格,平面变压器价格
  11. PHP文件处理--打开文件
  12. 019 Linux tcpdump 抓包案例入门可真简单啊?
  13. 英语语法自动矫正(nounplus)
  14. layui模板引擎文档 - layui.laytpl的具体使用
  15. 【论文笔记】Neural Machine Translation by Jointly Learning to Align and Translate
  16. 在ASP.NET Core中如何将各种文档合并为PDF?Aspose快速搞定!
  17. TemplateField.ItemTemplate 后台实现
  18. 数电学习(十一、D/A和A/D转换)
  19. 【考试】职称英语考试那些事儿
  20. Ext.form.TextField与Ext.form.TextArea

热门文章

  1. 大师兄科研网_挑战杯经验分享会与你话科研
  2. linux无线adb,linux 无法连接adb 设备
  3. Java 故障安全异常处理
  4. Threejs javascript 3D建模 框架
  5. 我的Android进阶之旅------Android ListView优化详解
  6. elasticsearch中文分词
  7. 手机新趋势:智能大屏
  8. 转DateTimePicker 控件的使用
  9. 【STM32 .Net MF开发板学习-05】PC通过Modbus协议远程操控开发板
  10. 【Webcam设计】USB摄像头(V4L2接口)的图片采集