线程,进程,是实现并发的方法,

并行:

  在同一时刻,同时运行多个任务,CPU 的数量大于等于任务数量,

并发:

  在同一时间间隔内, 同时处理多个任务,

  并行是并发。

进程:表示一个正在执行的程序,

  操作系统负责其上所有的执行

多进程

import multiprocessing
# from multiprocessing import process
import time # 模拟一个好使任务 print('a:',time.asctime(time.localtime(time.time()))) def func():
print('b:',time.asctime(time.localtime(time.time())))
time.sleep(5)
print('c:',time.asctime(time.localtime(time.time()))) # 进程实例 Process( target=func ,args=)
p = multiprocessing.Process( target=func )
p.start() # 启动 time.sleep(5)
print('d:',time.asctime(time.localtime(time.time())))
# 相当于两个 time.sleep(5) 同时运行

  

多个进程:

for i in range(30):
p = multiprocessing.Process( target=func )
p.start()

  

多进程并行的必要条件:

    总进程数理不多于 CPU 核心数量

    所以,现在运行的程序都是轮询调度产生的,

    但在 python 层面的确获得了并行,

多线程实现并发:  

    线程,是执行的最小单元 ,多线程:是一个进程 中同时开户多个线程,线程可以被中断,也可以被挂起

      GIL锁,在 python  里,一个进程一次只能有一个线程运行,

  

    进程:进程当中最少有一个线程,是操作系统分配资源的基本单位,

线程:

# import multiprocessing        #  进程
from threading import Thread # 线程对象
import time # 模拟一个好使任务 print('a:',time.asctime(time.localtime(time.time()))) def func():
print('b:',time.asctime(time.localtime(time.time())))
time.sleep(5)
print('c:',time.asctime(time.localtime(time.time()))) # 进程实例 Process( target=func ,args=) p = Thread( target=func )
p.start() # 启动 time.sleep(5)
print('d:',time.asctime(time.localtime(time.time())))
# 相当于两个 time.sleep(5) 同时运行

当线程遇到阻塞,睡眠,就会切换运行

在 linux 中

import os,time

pid = os.fork()    # 只要执行这个方法,就会COPY一个新的进程
if pid == 0:
print('子进程',pid)   # 永远是 0
else:print('父进程 ',pid)  # 返回的是子进程的 pid 值,
time.sleep(0.1)

  

因为两个进程都执行,同时两个成立,

多进程实现并发

#  多进程实现并发,
from socket import *
from multiprocessing import Process server = socket()
server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) # 重用端口
server.bind(('127.0.0.1', 10001))
server.listen(5) def fun(conn):
while True:
try:
r = conn.recv(1024)
if not r: break
conn.send(r)
except Exception:
break if __name__ == '__main__': # windows下
while True:
conn, addr = server.accept()
p = Process(target=fun, args=(conn,))
p.start()

  

多线程实现并发

#  多进程实现并发,
from socket import *
from threading import Thread server = socket()
server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) # 重用端口
server.bind(('127.0.0.1', 10001))
server.listen(5) def fun(conn):
while True:
try:
r = conn.recv(1024)
if not r: break
conn.send(r)
except Exception:
break if __name__ == '__main__': # windows下
while True:
conn, addr = server.accept()
p = Thread(target=fun, args=(conn,))
p.start()

  

潭州课堂25班:Ph201805201 并发(进程,线程) 第十一课 (课堂笔记)的更多相关文章

  1. 潭州课堂25班:Ph201805201 WEB 之 页面编写 第四课 登录注册 (课堂笔记)

    index.html 首页 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  2. 潭州课堂25班:Ph201805201 WEB 之 页面编写 第三课 (课堂笔记)

    index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  3. 潭州课堂25班:Ph201805201 WEB 之 页面编写 第二课 (课堂笔记)

    index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  4. 潭州课堂25班:Ph201805201 WEB 之 页面编写 第一课 (课堂笔记)

    index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  5. 潭州课堂25班:Ph201805201 第十课 类的定义,属性和方法 (课堂笔记)

    类的定义 共同属性,特征,方法者,可分为一类,并以名命之 class Abc: # class 定义类, 后面接类名 ( 规则 首字母大写 ) cls_name = '这个类的名字是Abc' # 在类 ...

  6. 潭州课堂25班:Ph201805201 并发(进程与线程池) 第十四课 (课堂笔记)

    循环执行一个线程 # -*- coding: utf-8 -*- # 斌彬电脑 # @Time : 2018/7/20 0020 5:35 import threading import queue ...

  7. 潭州课堂25班:Ph201805201 并发(进程,线程)二 第十二课 (课堂笔记

    线程与进程的其他相关操作 import threading # 线程 import multiprocessing # 进程 import socket import time def wo(): g ...

  8. 潭州课堂25班:Ph201805201 并发(协程) 第十五课 (课堂笔记)

    #斐波那契 def fid(n): res = [] indx = 0 a = 0 b = 1 while indx < n : res.append(b) a,b = b,a+b indx + ...

  9. 潭州课堂25班:Ph201805201 并发(通信) 第十三课 (课堂笔记)

    from multiprocessing import Process # 有个 url 列表 ,有5个 url ,一次请求是1秒,5个5秒 # 要求1秒把 url 请求完, a = [] # 在进程 ...

随机推荐

  1. eMMC基础技术8:操作模式1-boot mode

    1.前言 eMMC总线操作包含: boot mode device identification mode interrupt mode data transfer mode 本文主要描述boot m ...

  2. Day6-------------ext4文件系统

    1.cp /etc/passwd /sdb6 把/etc/passwd的内容写入 sdb6 写入过程:日志------------>刷到硬盘 2.ext4已经有点过时 xfs:可存海量数据 bt ...

  3. 对比synchronized与java.util.concurrent.locks.Lock 的异同

    主要区别 1.Lock能完成几乎所有synchronized的功能,并有一些后者不具备的功能,如公平锁.等待可中断.锁绑定多个条件等: 2.synchronized 是Java 语言层面的,是内置的关 ...

  4. 最全Kafka 设计与原理详解【2017.9全新】

    一.Kafka简介 1.1 背景历史 当今社会各种应用系统诸如商业.社交.搜索.浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它 如何 ...

  5. Android9.0新特性曝光,你准备好了吗

    Android9.0最早出现在2018年1月25日的谷歌官网上,初步代号已经确定为“Pistachio Ice Cream”(开心果冰淇淋),不过按照Google的惯例,如此长的三个单词代号,通常都只 ...

  6. PHP: POST Content-Length of xxx bytes exceeds the limit of 8388608 bytes

    用户上传了 4 个附件,每个小于 5M,但是总大小超过了 15 M. 在 Nginx 日志中找到了如下错误信息,还没有到 Laravel 日志那一层. 2018/08/13 10:14:38 [err ...

  7. 东师理想云平台异步任务处理系统V2.0重构思路

    现存问题分析: 1.功能太多,而且杂糅到一个程序中,架构不清晰,出问题不好调试.2.系统重启后,不登录到桌面,程序不运行,用户体验差.经常的下载403等错误3.处理程序卡死,处理速度慢等问题,不支持多 ...

  8. 微信h5支付源码DEMO参考

    类库代码 wechatH5Pay.php <?php //use Flight; /** * 微信支付服务器端下单 * 微信APP支付文档地址: https://pay.weixin.qq.co ...

  9. mysql 快速拷贝表

  10. 【UOJ】#49.铀仓库

    题解: 会发现实质上运一个点就是两个点之间的距离 暴力是n^2的 考虑二分距离来计算 二分完之后还要二分这个点对应的位置 nlognlogn的 考虑一种常用的思路 用一个点来更新另一个点 首先我们先二 ...