潭州课堂25班:Ph201805201 并发(进程,线程) 第十一课 (课堂笔记)
线程,进程,是实现并发的方法,
并行:
在同一时刻,同时运行多个任务,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 并发(进程,线程) 第十一课 (课堂笔记)的更多相关文章
- 潭州课堂25班:Ph201805201 WEB 之 页面编写 第四课 登录注册 (课堂笔记)
index.html 首页 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- 潭州课堂25班:Ph201805201 WEB 之 页面编写 第三课 (课堂笔记)
index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- 潭州课堂25班:Ph201805201 WEB 之 页面编写 第二课 (课堂笔记)
index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- 潭州课堂25班:Ph201805201 WEB 之 页面编写 第一课 (课堂笔记)
index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- 潭州课堂25班:Ph201805201 第十课 类的定义,属性和方法 (课堂笔记)
类的定义 共同属性,特征,方法者,可分为一类,并以名命之 class Abc: # class 定义类, 后面接类名 ( 规则 首字母大写 ) cls_name = '这个类的名字是Abc' # 在类 ...
- 潭州课堂25班:Ph201805201 并发(进程与线程池) 第十四课 (课堂笔记)
循环执行一个线程 # -*- coding: utf-8 -*- # 斌彬电脑 # @Time : 2018/7/20 0020 5:35 import threading import queue ...
- 潭州课堂25班:Ph201805201 并发(进程,线程)二 第十二课 (课堂笔记
线程与进程的其他相关操作 import threading # 线程 import multiprocessing # 进程 import socket import time def wo(): g ...
- 潭州课堂25班:Ph201805201 并发(协程) 第十五课 (课堂笔记)
#斐波那契 def fid(n): res = [] indx = 0 a = 0 b = 1 while indx < n : res.append(b) a,b = b,a+b indx + ...
- 潭州课堂25班:Ph201805201 并发(通信) 第十三课 (课堂笔记)
from multiprocessing import Process # 有个 url 列表 ,有5个 url ,一次请求是1秒,5个5秒 # 要求1秒把 url 请求完, a = [] # 在进程 ...
随机推荐
- sqlserver中将查询结果拼接成字符串
#for xml path(param)--将查询结果以xml格式输出 select id,name from table1 for xml path --id和name为table1的真实字段 - ...
- javaScript——原型继承四步曲
<script> //js模拟类的创建以及继承 //第一步:创建父类 function Parent(name){ this.name = name; } //给父类添加属性方法 Pare ...
- PYTHON-字符编码&文件处理-练习
# 把多个账号密码写入文件中# 编写登录功能,登录失败三次 程序退出. # 登录账号密码定义,用列表分割,for循环取值=====判断对错=====循环条件3次退出# with open(r'db.t ...
- [Android四大组件之二]——Service
Service是Android中四大组件之一,在Android开发中起到非常重要的作用,它运行在后台,不与用户进行交互. 1.Service的继承关系: java.lang.Object → andr ...
- es6 entries(),keys() 和 values()
for (let index of ['a', 'b'].keys()) { console.log(index); } // 0 for (let elem of ['a', 'b'].values ...
- 【必备】史上最全的浏览器 CSS & JS Hack 手册
[必备]史上最全的浏览器 CSS & JS Hack 手册 浏览器渲染页面的方式各不相同,甚至同一浏览器的不同版本(“杰出代表”是 IE)也有差异.因此,浏览器兼容成为前端开发人员的必备技 ...
- 如何设置font-family
第一部分: 根据font-family的原则,假如客户终端不认识前面的字体,就自动切换到第二种字体,第二种不认识就切换到第三种,以此类推.假如都不能识别就调用默认字体 根据font-family的字体 ...
- jquery----语法扩展(导入js文件)
简单使用 第一步,新建js文件 第二步,在js文件中添加 $.extend({ "GDP": function () { console.log("哈哈哈哈") ...
- 【C++ Primer 第7章】定义抽象数据类型
参考资料 1. C++Primer #7 类 Sales_data类 Sales_data.h #include<iostream> #include<string> clas ...
- webstrom的热更新没效果
webstorm保存的时候会先保存到临时文件中,其实并没有真正保存,要在setting->stystem settings下的“use save write”去掉