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


猜你喜欢
- pandas 保存数据到excel,csvpandas 保存数据比较简单对于任意一个dataframe:import pandas as p
- "神经衰弱"翻牌游戏考察玩家的记忆力,游戏的开头会短时间给你看一小部分牌的图案,当玩家翻开两张相同图案牌的时候,会消除,
- Ubuntu Server下启动/停止/重启MySQL数据库的三种方式系统环境:ubuntu server 12.10 x64(mysql为
- 在写桌面软件时,通常会使用到托盘上的泡泡提示功能,让我们来看看使用python如何实现这个小功能。一、Linux系统在Linux上,实现一个
- CSS入门很简单,规则不多,写法也比较灵活,因此也带来了很多有创意的写法。跟IE一样,很好的容错性,像《 边框样式写法总结 》所说的bord
- Cookie简介首先,我们对Cookie做一个简单的介绍,说明如何利用ASP来维护cookie。Cookie是存储在客户端计算机中的一个小文
- 今天遇到一个蛮奇怪的问题:当我在控制台中使用 urllib 没问题,但是当我在 vscode 中 .py 文件中导入 urllib 使用时会
- 环境cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@l
- 第一个博客,大概就是开始学数据库了,然后自己下载各种搞不定,各种问题,百度也不是很好用,问了下也没什么结果,后来总算搞定,但是花了很长时间,
- 代码示例1(8位)import randomimport stringtotal = string.ascii_letters + stri
- 上期回顾:亚马逊购物用户体验分析 (一)“查找内部”功能书是在亚马逊最常被购买的产品之一,所以毋庸置疑亚马逊的开发小组已经建立了一个关于“查
- 再dos中无法使用pip,命令主要是没有发现这个命令。我们先找到这个命令的位置,一般是在python里面的Scripts文件夹里面。我们可以
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSO
- 我们使用alter table add column语句向现有表中添加新列。简介alter table table_nameadd [col
- 字典的添加与修改# coding:utf-8if __name__ == '__main__':
- 一、List移除某个值remove以Python 3.x版本为主remove:列表值移除方法1、函数编号函数名说明1remove移除列表中匹
- 本文实例讲述了MySQL使用外键实现级联删除与更新的方法。分享给大家供大家参考,具体如下:MySQL支持外键的存储引擎只有InnoDB,在创
- GO通道和 sync 包的分享我们一起回顾一下上次分享的内容:GO协程同步若不做限制的话,会产生数据竞态的问题我们用锁的方式来解决如上问题,
- 首先,我们需要着重介绍一些概念,以给你提供一些使这个“奇迹”得以发生的组成部分。太轻易地泄露伏笔对于讲故事来说不是个好的形式,所以那些不愿意
- 一、概述推荐使用参考网站: json在python中,json模块可以实现json数据的序列化和反序列化序列化:将可存放在内存中的pytho