博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 多进程
阅读量:4925 次
发布时间:2019-06-11

本文共 1405 字,大约阅读时间需要 4 分钟。

#coding: utf-8import multiprocessingimport timeimport osdef func(msg):    print("msg: ", os.getpid())    time.sleep(3)    print ("end")if __name__ == "__main__":    pool = multiprocessing.Pool(processes = 3)    for i in xrange(4):        msg = ("hello %d" %(i))        pool.apply_async(func, (msg, ))   #维持执行的进程总数为processes,当一个进程执行完毕后会添加新的进程进去    print "Mark~ Mark~ Mark~~~~~~~~~~~~~~~~~~~~~~"    pool.close()    pool.join()   #调用join之前,先调用close函数,否则会出错。执行完close后不会有新的进程加入到pool,join函数等待所有子进程结束    print ("Sub-process(es) done.")

apply_async(func[, args[, kwds[, callback]]]) 它是非阻塞,apply(func[, args[, kwds]])是阻塞的(理解区别,看例1例2结果区别)

close() 关闭pool,使其不在接受新的任务。
terminate() 结束工作进程,不在处理未完成的任务。
join() 主进程阻塞,等待子进程的退出, join方法要在close或terminate之后使用。

执行说明:创建一个进程池pool,并设定进程的数量为3,xrange(4)会相继产生四个对象[0, 1, 2, 4],四个对象被提交到pool中,因pool指定进程数为3,所以0、1、2会直接送到进程中执行,当其中一个执行完事后才空出一个进程处理对象3,所以会出现输出“msg: hello 3”出现在"end"后。因为为非阻塞,主函数会自己执行自个的,不搭理进程的执行,所以运行完for循环后直接输出“mMsg: hark~ Mark~ Mark~~~~~~~~~~~~~~~~~~~~~~”,主程序在pool.join()处等待各个进程的结束。


创建函数并将其作为单个进程

import multiprocessing as MPimport osimport timedef worker(interval):    n = 5    while n > 0:        print("The time is {0}".format(time.ctime()))        time.sleep(interval)        n -= 1if __name__ == "__main__":    p = MP.Process(target = worker, args = (3,))    p.start()  #  make it run    print ("p.pid:", os.getpid())

转载于:https://www.cnblogs.com/sayiqiu/p/10759902.html

你可能感兴趣的文章
CSS H5布局
查看>>
iis7.5+win2008 出现 HTTP Error 503. The service is unavailable.
查看>>
python7
查看>>
python的and和or优先级
查看>>
if 调用common里的函数
查看>>
使用spring.net+nibernate时如何用aspnet_regiis加密数据库连接字符串
查看>>
UNION
查看>>
九.配置SMB共享(Samba共享)
查看>>
正则表达式
查看>>
Oracle RMAN Recover中使用BBED 跳过缺失的归档 继续 Recover 的测试
查看>>
定期备份脚本
查看>>
生成桌面插件
查看>>
Unable to resolve target 'android-9'
查看>>
vector和list的区别
查看>>
[LeetCode] 127. Word Ladder _Medium tag: BFS
查看>>
20172302 《程序设计与数据结构》第四周学习总结
查看>>
FZU 2086 餐厅点餐(枚举)
查看>>
HDU 2188 悼念512汶川大地震遇难同胞——选拔志愿者(基础巴什博奕)
查看>>
多态,虚函数
查看>>
Could not obtain information about Windows NT group/user 'xxxx\xxxx', error code 0x5
查看>>