Python Day 06
2019-08-21 19:36
99 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Daisy_0514/article/details/99978285
多进程
1.导入 import multiprocessing
2.创建子进程调用函数
除了创建的子进程和子进程调用函数,其他的都是脚本主进程
# 创建子进程调用函数 函数 args返回元组形式 p = multiprocessing.Process(target=info,args=('hello',)) p.start()#启动进程 p.join()#阻塞进程 等待 print('hello world')
3.多进程
开多进程中:join只为卡主进程,使得多进程执行完毕后在打印输出
4.进程锁
多进程并发执行,也可能乱序并发执行
多进程加锁,挨个执行,但也有可能乱序
lock = multiprocessing.Rlock()#创建锁 p = multiprocessing.Process(target=info,args=(lock,num))
5.进程通信(管道)
import multiprocessing def A(conn):#conn表示管道类型 while 1: # conn.send(['a','b','c','d']) print('A',conn.recv())#收到数据 # conn.close()#关闭 if __name__ == "__main__": conn_a,conn_b = multiprocessing.Pipe()#创建一个管道含有两个口 p = multiprocessing.Process(target=A,args=(conn_a,))#创建子进程 p.start() while 1: input_ = input('>>') conn_b.send(input_)#发送消息给A # print('main',conn_b.recv())全局变量进程不可以共享,队列可以进程共享
案例1 类似机器人聊天系统
import multiprocessing def computer(conn): recv_ = conn.recv() print('电脑收到:%s'%recv_) if recv_ == "你好": conn.send('好') def person(conn): input_ = input('人说:') conn.send(input_) if __name__ == "__main__": conn_computer,conn_person = multiprocessing.Pipe()#创建管道 p_computer = multiprocessing.Process(target=computer,args=(conn_computer,))#创建子进程 p_computer.start() person(conn_person)
6.全局变量不可以进程共享
7.队列
队列可以进程共享
作用 | |
---|---|
put(item, block=True, timeout=None) | 将item放入队列 block 有 flase and true timeout 为阻塞时间 |
get(block=True, timeout=None) | 将从队列移除并返回一个项目 |
qsize() | 返回队列的大致大小,qsize() > 0 不保证后续的 get() 不被阻塞,qsize() < maxsize 也不保证 put() 不被阻塞 |
empty() | 如果队列为空,返回 True ,否则返回 False 。 |
full() | 如果队列是满的返回 True ,否则返回 False |
join() | 阻塞至队列中所有的元素都被接收和处理完毕。 |
task_done() | 表示前面排队的任务已经被完成。被队列的消费者线程使用。每个 get() 被用于获取一个任务, 后续调用 task_done() 告诉队列,该任务的处理已经完成,多次调用可能会引发异常 |
import multiprocessing import time def PUT(q): for i in range(10): time.sleep(1) q.put(100) def GET(q): while 1: try: print('GET',q.get(timeout = 5)) except: print('队列已经在五秒之内无法获取元素') break
相关文章推荐
- PythonDay_06
- day_06python模块学习01
- 重学Python - Day 06 - python基础 -> linux命令行学习 -- 简单基础命令学习
- python_day_06
- Python基础语法06--文件
- Day 07 python线程de一天
- 【Day 6】用 Python 画一个小猪佩奇
- PYTHON_DAY_12_20160610
- Python学习笔记06-类与文件和异常
- Python Day19
- python day ten
- 【面试专题06】Python全栈日记-归并排序
- 复习Python的Day 27
- Python新手学习练习册---06 安装Scrapy库的时候报错解决
- 06-python基础知识-函数使用
- python小白——进阶之路——day10天-———闭包函数
- Python基础06 循环for while 中断循环
- python12day
- python 自动化之路 day 面向对象基础
- Python标准库06 子进程 (subprocess包)