如何在Python3.5中使用多进程

这篇文章将为大家详细讲解有关如何在Python3.5中使用多进程,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

具体如下:

如何在Python3.5中使用多进程

进程类:Process

如何在Python3.5中使用多进程

示例及代码:

如何在Python3.5中使用多进程

(1)创建函数作为单进程

#!/usr/bin/envpython
#-*-coding:utf-8-*-
#Author:ZhengzhengLiu
importmultiprocessing
importtime
#创建函数并将其作为单个进程
defworker(interval):
n=5#进程数
whilen>0:
print("Thetimeis:{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进程存活状态: TrueThe time is :Wed Nov 1 10:59:03 2017The time is :Wed Nov 1 10:59:05 2017The time is :Wed Nov 1 10:59:07 2017The time is :Wed Nov 1 10:59:09 2017The time is :Wed Nov 1 10:59:11 2017

(2)创建函数作为多进程

#!/usr/bin/envpython
#-*-coding:utf-8-*-
#Author:ZhengzhengLiu
importmultiprocessing
importtime
#创建函数作为多进程
defwork1(interval):
print("work1...")
time.sleep(interval)
print("endwork1...")
defwork2(interval):
print("work2...")
time.sleep(interval)
print("endwork2...")
defwork3(interval):
print("work3...")
time.sleep(interval)
print("endwork3...")
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("ThenumberofCPUis%d:"%(multiprocessing.cpu_count()))#打印CPU核数
forpinmultiprocessing.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:7952ending....work3...work1...work2...end work1...end work2...end work3...

注:先运行主进程的内容,再运行子进程

(3)将进程定义成一个类

#!/usr/bin/envpython
#-*-coding:utf-8-*-
#Author:ZhengzhengLiu
importmultiprocessing
importtime
#将进程定义为一个类
classClockProcess(multiprocessing.Process):
def__init__(self,interval):
multiprocessing.Process.__init__(self)#重构了Process类里面的构造函数
self.interval=interval
defrun(self):#固定用run方法,启动进程自动调用run方法
n=5
whilen>0:
print("Thetimeis{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 2017The time is Wed Nov 1 11:31:30 2017The time is Wed Nov 1 11:31:32 2017The time is Wed Nov 1 11:31:34 2017The time is Wed Nov 1 11:31:36 2017

(4)Queue(队列)实现多进程数据传输

#!/usr/bin/envpython
#-*-coding:utf-8-*-
#Author:ZhengzhengLiu
importmultiprocessing
#Queue是多进程安全的队列,可以使用实现多进程之间的数据传递
defwriter_proc(q):
try:
q.put(1,block=False)#put方法插入数据到队列中
except:
pass
defreader_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

关于如何在Python3.5中使用多进程就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

发布于 2021-04-03 22:30:47
收藏
分享
海报
0 条评论
182
上一篇:Bootstrap类如何在Zend Framework中使用 下一篇:怎么在Python中使用函数的参数
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码