python 进程 进程池 进程间通信实现解析
作者:南鱼羁荒渡 发布时间:2022-07-05 07:38:28
标签:python,进程,池,通信
1.python 中创建进程的两种方式:
from multiprocessing import Process
import time
def test_():
print '-----test-----'
if __name__ == '__main__':
p = Process(target=test_)
p.start()
while True:
print '--main--'
'''1.通过process 类创建一个进程对象,然后start即可开启进程, test
test_函数是进程实现的功能'''
from multiprocessing import Process
import time
class MyNewProcess(Process):
def run(self):
print '------run-------'
if __name__ == '__main__':
p = MyNewProcess()
p.start()
print '---main-----'
'''2.通过类似继承process 子类中必须有run 方法 里边实现 进程功能
创建对象之后 调用start'''
2.进程池
from multiprocessing import Pool
from time import sleep
import os
def func(num):
for i in range(3):
print '%s %s' %(os.getpid(),num) #
sleep(2)
def main():
pool = Pool(3)
for i in range(3, 6):
res = pool.apply_async(func, (i,))
pool.close()
pool.join()
if __name__ == '__main__':
main()
3.进程间通信
'''python 进程间通信 Queue '''
'''1.Queue使用方法
1.Queue.qsize(): 返回当前队列包含的消息数量
2.Queue.empty(): 如果队列为空 返回True 反之 False
3.Queue.full(): 如果队列满了返回True 反之 False
4.Queue.get(): 获取队列中一条消息 然后将其从队列中移除 可传参数 超市时长
Queue.get_nowait(): 相当于 Queue.get(False) 取不到值 触发异常
Queue.put(): 将一个值添加到数列 可传参数 超时时长
Queue.put_nowait():相当于 Queue.get(False) 当队列满时 报错
'''
from multiprocessing import Process, Queue
import time
q = Queue() # 创建队列
for i in range(10):
q.put(i)
def test_a():
try:
while True:
num = q.get_nowait()
print '我是进程a 取出数字为:%s'%num
time.sleep(1)
except Exception, e:
print e
def test_b():
try:
while True:
num = q.get_nowait()
print '我是进程b 取出数字是:%s'%num
time.sleep(1)
except Exception, e:
print e
if __name__ == '__main__':
p1 = Process(target=test_a)
p2 = Process(target=test_b)
p1.start()
p2.start()
至此 简单得使用已经结束
来源:https://www.cnblogs.com/nanyu/p/11394739.html


猜你喜欢
- 网站用户为什么注册?这个问题在平时我们讨论的并不多。我们常常单纯的在设想如何简化注册流程,如何从细节的关怀入手避免用户注册时填写错误信息造成
- 众所周知,程序在启动后,各个程序文件都会被加载到内存中,这样如果程序文本再次变化,对当前程序的运行没有影响,这对程序是一种保护。但是,对于像
- 前言:我们的vue代码打包上传到服务器之后,要是数据接口 以后换了域名什么的,是不是需要重新去vue文件里修改接口。能不能生成一个配置文件,
- 一、自定义分页1、基础版自定义分页data = []for i in range(1, 302): tmp = {"i
- 随着公司开发人员的增加,以及多需求的并行开发,功能上线就会碍手碍脚;害怕自己没写完的代码被别人部署到线上,害怕别人代码没写完被自己部署到线上
- 本文为大家分享了python查看微信消息撤回的具体代码,供大家参考,具体内容如下1.安装itchatitchat是一个开源的python微信
- 这将为我们的团队节省每天重复的数据处理时间......简介如果你目前在一个数据或商业智能团队工作,你的任务之一可能是制作一些每日、每周或每月
- 1. 使用输入值初始化列表nums = []rows = eval(input("请输入行数:"))columns =
- Python 读取 .gz 文件读取.gz 文件需要使用gzip 包,如果没有安装可以自行在终端安装pip install gzipimpo
- 如何在ADO中客户端利用好缓存技术?具体应用见下例:global.asa< !--METADATA TYPE=&q
- 在本文中,我将给大家演示如何在 python 中使用四种方法替换文件中的文本。方法一:不使用任何外部模块搜索和替换文本让我们看看如何在文本文
- 一、实现代码1.sql-- phpMyAdmin SQL Dump-- version 4.5.1-- http://www.phpmyad
- 方法来源于土豆网的导航,在这里纪录一下实现的思路。主要是利用 position 属性的 absolute 和 relative 配
- 本文主要概括安装时提示有挂起的操作、收缩数据库、压缩数据库、转移数据库给新用户以已存在用户权限、检查备份集、修复数据库等操作技巧。1.挂起操
- 前言本篇来学习下在allure中如何添加环境信息properties文件在allure的report根目录下添加一个 environment
- 数据合并是数据处理过程中的必经环节,pandas作为数据分析的利器,提供了四种常用的数据合并方式,让我们看看如何使用这些方法吧!1.conc
- cos()方法返回x弧度的余弦值。语法以下是cos()方法的语法:cos(x)注意:此函数是无法直接访问的,所以我们需要导入ma
- 为 Web页指定 DOCTYPE 会影响浏览器呈现页的方式。Internet Explorer、Mozilla Firefox 和 Oper
- InstrRev描述:返回某字符串在另一个字符串中出现的从结尾计起的位置。语法:InstrRev(string1, string2
- 在如今的Web设计中,图片的应用是必不可少的,为了更好地设计网站效果,大体积的图片被越来越多地应用到Web设计中来,所以,更好地优化图片文件