Python3.5多进程原理与用法实例分析
作者:loveliuzz 发布时间:2021-11-28 14:05:03
本文实例讲述了Python3.5多进程原理与用法。分享给大家供大家参考,具体如下:
进程类:Process
示例及代码:
(1)创建函数作为单进程
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu
import multiprocessing
import time
#创建函数并将其作为单个进程
def worker(interval):
n = 5 #进程数
while n>0:
print("The time is :{0}".format(time.ctime())) #初始化时间
time.sleep(interval) #睡眠时间
n-=1
if __name__ == "__main__":
# 创建进程,target:调用对象,args:传参数到对象
p = multiprocessing.Process(target=worker,args=(2,))
p.start() #开启进程
print("进程号:",p.pid)
print("进程别名:",p.name)
print("进程存活状态:",p.is_alive())
运行结果:
进程号: 6784
进程别名: Process-1
进程存活状态: True
The time is :Wed Nov 1 10:59:03 2017
The time is :Wed Nov 1 10:59:05 2017
The time is :Wed Nov 1 10:59:07 2017
The time is :Wed Nov 1 10:59:09 2017
The time is :Wed Nov 1 10:59:11 2017
(2)创建函数作为多进程
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu
import multiprocessing
import time
#创建函数作为多进程
def work1(interval):
print("work1...")
time.sleep(interval)
print("end work1...")
def work2(interval):
print("work2...")
time.sleep(interval)
print("end work2...")
def work3(interval):
print("work3...")
time.sleep(interval)
print("end work3...")
if __name__ == "__main__":
p1 = multiprocessing.Process(target=work1,args=(1,))
p2 = multiprocessing.Process(target=work2,args=(2,))
p3 = multiprocessing.Process(target=work3,args=(3,))
p1.start()
p2.start()
p3.start()
print("The number of CPU is %d:"%(multiprocessing.cpu_count())) #打印CPU核数
for p in multiprocessing.active_children(): #循环打印子进程的名称和pid
print("子进程名称:%s,子进程pid:%d" %(p.name,p.pid))
print("ending....")
运行结果:
The number of CPU is 4:
子进程名称:Process-2,子进程pid:7108
子进程名称:Process-1,子进程pid:1896
子进程名称:Process-3,子进程pid:7952
ending....
work3...
work1...
work2...
end work1...
end work2...
end work3...
注:先运行主进程的内容,再运行子进程
(3)将进程定义成一个类
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu
import multiprocessing
import time
#将进程定义为一个类
class ClockProcess(multiprocessing.Process):
def __init__(self,interval):
multiprocessing.Process.__init__(self) #重构了Process类里面的构造函数
self.interval = interval
def run(self): #固定用run方法,启动进程自动调用run方法
n = 5
while n>0:
print("The time is {0}".format(time.ctime()))
time.sleep(self.interval)
n-=1
if __name__ == "__main__":
p = ClockProcess(2)
p.start()
运行结果:
The time is Wed Nov 1 11:31:28 2017
The time is Wed Nov 1 11:31:30 2017
The time is Wed Nov 1 11:31:32 2017
The time is Wed Nov 1 11:31:34 2017
The time is Wed Nov 1 11:31:36 2017
(4)Queue(队列)实现多进程数据传输
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu
import multiprocessing
#Queue是多进程安全的队列,可以使用实现多进程之间的数据传递
def writer_proc(q):
try:
q.put(1,block=False) #put方法插入数据到队列中
except:
pass
def reader_proc(q):
try:
print(q.get(block=False)) #get方法从队列中读取并删除一个元素
except:
pass
if __name__ == "__main__":
q = multiprocessing.Queue()
writer = multiprocessing.Process(target=writer_proc,args=(q,))
writer.start()
reader = multiprocessing.Process(target=reader_proc,args=(q,))
reader.start()
reader.join()
writer.join()
运行结果:
1
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/loveliuzz/article/details/78411458
猜你喜欢
- 使用Python爬虫库requests多线程抓取猫眼电影TOP100思路:查看网页源代码抓取单页内容正则表达式提取信息猫眼TOP100所有信
- Pycharm代码运行调试,具体内容如下1、准备工作(1)Python版本为2.7或者更高版本(2)已经创建了一个Python工程并且添加了
- 1.首先在pycharm上使用pip安装pip install html-table pip install jira2.初始化发件人邮箱,
- 在一些情况下,MySQL可以直接使用索引来满足一个 ORDER BY 或 GROUP BY 子句而无需做额外的排序。尽管 ORDER BY
- 今天帮一同学导入一个excel数据,我把excel保存为txt格式,然后建表导入,失败!分隔符格式不匹配,无法导入!!!!怎么看两边都是\t
- 一个更易读的网站意味着网站使用性的改良以及提供愉悦的阅读体验。我们希望浏览者们能或者这些好处不是吗?这篇文章我们将介绍5个简单的方法让你能提
- 效果1 实现代码读取txt文件:def readText(text_file_path): with open(t
-   跨平台的pywifi模块支持操作无线网卡,该模块易于使用,同时支持Windows、Linux等多个系
- 描述 嵌入在你的web页面中的导航元素能够降低你的搜索引擎评价排名并且降低你的网站的响应性能。本文作者想同你一起探讨如何使用AJAX技术来解
- 网上大部分的免费asp程序使用的是access数据库。但是access数据库作为一个中小型的单机数据库系统,在承担访问量、数据量大的网站应用
- 随着网络的普及,基于网络的应用也越来越多。网络数据库就是其中之一。通过一台或几台服务器可以为很多客户提供服务,这种方式给人们带来了很多方便,
- Blog的全名应该是Web log,中文意思是“网络日志”,后来缩写为Blog,而博客(Blogger)就是写Blog的人。从理解上讲,博客
- function getBytesLength(str){ var re=/[\x00-\xf
- Django 基本命令本节主要是为了让您了解一些django最基本的命令,请尝试着记住它们,并且多多练习下1. 新建一个 django pr
- 前言:首先,笔者不是web安全的专家,所以这不是web安全方面专家级文章,而是学习笔记、细心总结文章,里面有些是我们phper不易发现或者说
- 本文实例讲述了Python基于Socket实现的简单聊天程序。分享给大家供大家参考,具体如下:需求:SCIENCE 和MOOD两个人软件专业
- 一直想了解Web编程的技术。PHP是进行Web编程重要的一种语言,书上总是说,PHP是用于服务器端的编程语言。但是,实在不能理解它是怎么用于
- 报错:Uncaught SyntaxError: Unexpected token o in JSON at position 1at JS
- 简介:type() 函数可以对数据的类型进行判定。isinstance() 与 type() 区别:type() 不会认为子类是一种父类类型
- 在最新版的pandas中(不知道之前的版本有没有这个问题),当我们对具有多层次索引的对象做切片或者通过df[bool_list]的方式索引的