问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何使用Python实现多进程编程

发布网友 发布时间:2022-04-24 07:56

我来回答

1个回答

热心网友 时间:2022-05-10 05:01

1. Process
创建进程的类:Process([group [, target [, name [, args [, kwargs]]]]]),target表示调用对象,args表示调用对象的位置参数元组。kwargs表示调用对象的字典。name为别名。group实质上不使用。
方法:is_alive()、join([timeout])、run()、start()、terminate()。其中,Process以start()启动某个进程。
属性:authkey、daemon(要通过start()设置)、exitcode(进程在运行时为None、如果为–N,表示被信号N结束)、name、pid。其中daemon是父进程终止后自动终止,且自己不能产生新进程,必须在start()之前设置。
 
例1.1:创建函数并将其作为单个进程
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__":
    p = multiprocessing.Process(target = worker, args = (3,))
    p.start()
    print "p.pid:", p.pid
    print "p.name:", p.name
    print "p.is_alive:", p.is_alive()
结果
12345678    p.pid: 8736p.name: Process-1p.is_alive: TrueThe time is Tue Apr 21 20:55:12 2015The time is Tue Apr 21 20:55:15 2015The time is Tue Apr 21 20:55:18 2015The time is Tue Apr 21 20:55:21 2015The time is Tue Apr 21 20:55:24 2015    
 
例1.2:创建函数并将其作为多个进程
import multiprocessing
import time

def worker_1(interval):
    print "worker_1"
    time.sleep(interval)
    print "end worker_1"

def worker_2(interval):
    print "worker_2"
    time.sleep(interval)
    print "end worker_2"

def worker_3(interval):
    print "worker_3"
    time.sleep(interval)
    print "end worker_3"

if __name__ == "__main__":
    p1 = multiprocessing.Process(target = worker_1, args = (2,))
    p2 = multiprocessing.Process(target = worker_2, args = (3,))
    p3 = multiprocessing.Process(target = worker_3, args = (4,))

    p1.start()
    p2.start()
    p3.start()

    print("The number of CPU is:" + str(multiprocessing.cpu_count()))
    for p in multiprocessing.active_children():
        print("child   p.name:" + p.name + "\tp.id" + str(p.pid))
    print "END!!!!!!!!!!!!!!!!!"
结果
1234567891011    The number of CPU is:4child   p.name:Process-3    p.id7992child   p.name:Process-2    p.id4204child   p.name:Process-1    p.id6380END!!!!!!!!!!!!!!!!!worker_1worker_3worker_2end worker_1end worker_2end worker_3    
 
例1.3:将进程定义为类
import multiprocessing
import time

class ClockProcess(multiprocessing.Process):
    def __init__(self, interval):
        multiprocessing.Process.__init__(self)
        self.interval = interval

    def run(self):
        n = 5
        while n > 0:
            print("the time is {0}".format(time.ctime()))
            time.sleep(self.interval)
            n -= 1

if __name__ == '__main__':
    p = ClockProcess(3)
    p.start()      
注:进程p调用start()时,自动调用run()
结果
12345    the time is Tue Apr 21 20:31:30 2015the time is Tue Apr 21 20:31:33 2015the time is Tue Apr 21 20:31:36 2015the time is Tue Apr 21 20:31:39 2015the time is Tue Apr 21 20:31:42 2015

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
行车工退休是否有工龄年限限制?男士、女士的的退休年龄。 北京中新惠尔健康科技有限公司解决方案 北京中新惠尔健康科技有限公司公司文化 北京中新惠尔健康科技有限公司服务产品 北京中新惠尔健康科技有限公司历史沿革 北京中新惠尔健康科技有限公司惠尔简介 速腾能放多久? 昆山汽车搭电多少钱? 比亚迪救急估计电瓶没电了 盒马员工超过1小时算不算大吧 python可以多进程吗 python 多进程? 微信清空聊天记录怎样才能恢复网络不一祥能恢复吗 请问“查找我的iPhone已在iPad上禁用”是什么意思?是出现什么问题吗?在这种情况下怎样解决? 华为p30pro屏幕摔坏了换要好多钱? 华为p30pro 前后外屏碎了换需要多少钱? 华为p30pro外屏幕破损? 华为P30pro爆屏去哪里修? 如果微信对方把我删了,我没删对方,我们之前所有聊天的语音会消失吗? 本以为和对方聊得挺好,可对方莫名其妙把你删了,你怎么看? 分手后对方把自己删了怎么办? 三星笔记本如何刷BIOS? 请问,三星笔记本,如何还原BIOS设置? 三星笔记本bios怎么升级 三星笔记本bios怎么恢复出厂设置方法 三星笔记本电脑如何把BIOS设置中文? 统信UOS系统怎么安装荐片播放器 电脑荐片播放器看电影选影视浏览不了封面,观看没有问题,这封面为什么看不见?,网络没问题! 什么播放器可以看致命弯道 荐片卸载不了 python多进程中队列不空时阻塞,求解为什么 python多进程队列耗时多吗 python多进程为什么一定要 python如何开多进程,在每条进程里再开多线程 python 多进程问题 python多进程问题? 为什么python多进程一定要 为什么在Python里推荐使用多进程而不是多 python Windows下的多进程控制问题 煮羊肉怎么去除羊膻味 做羊肉火锅怎样去气味? 中国的自然旅游资源和人文旅游资源分别包涵哪些类别? 自然旅游资源和人文旅游资源都有哪些?? 旅游资源的定义是什么? 如何开发人文旅游资源 福建省多有哪些重要人文旅游资源? 海南自然旅游资源有哪些?人文旅游资源有哪些? 旅游资源开发的概念是什么? 新鲜猪肉放冰箱冷藏变绿了是怎么回事? 放在冰箱里面的猪肉为什么会发绿?