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

python执行多进程时,如何获取函数返回的值

发布网友 发布时间:2022-04-26 22:15

我来回答

2个回答

热心网友 时间:2022-04-18 06:03

共享变量的方法。

没有办法直接实现你的需求,但是,你可以用共享变量的方法实现,比如:

def worker(procnum, return_dict):


'''worker function'''


print str(procnum) + ' represent!'


return_dict[procnum] = procnumif __name__ == '__main__':


manager = Manager()


return_dict = manager.dict()


jobs = []    for i in range(5):


p = multiprocessing.Process(target=worker, args=(i,return_dict))
jobs.append(p)


p.start()    for proc in jobs:


proc.join()    print return_dict.values()

热心网友 时间:2022-04-18 07:21

交换数据一般用queue吧。

17.2.1.3. Exchanging objects between processes

multiprocessing supports two types of communication
channel between processes:

Queues

The Queue
class is a near clone of queue.Queue. For example:

from multiprocessing import Process, Queue

def f(q):
q.put([42, None, 'hello'])

if __name__ == '__main__':
q = Queue()
p = Process(target=f, args=(q,))
p.start()
print(q.get()) # prints "[42, None, 'hello']"
p.join()

Queues are thread and process safe.

Pipes

The Pipe() function returns a pair of connection objects
connected by a pipe which by default is plex (two-way). For example:

from multiprocessing import Process, Pipe

def f(conn):
conn.send([42, None, 'hello'])
conn.close()

if __name__ == '__main__':
parent_conn, child_conn = Pipe()
p = Process(target=f, args=(child_conn,))
p.start()
print(parent_conn.recv()) # prints "[42, None, 'hello']"
p.join()

The two connection objects returned by Pipe()
represent the two ends of the pipe. Each connection object has send()
and recv()
methods (among others). Note that data in a pipe may become corrupted if two
processes (or threads) try to read from or write to the same end of the
pipe at the same time. Of course there is no risk of corruption from processes
using different ends of the pipe at the same time.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
NBA下赛季常规赛MVP和总决赛MVP会是谁 吴前当选CBA常规赛MVP,他是实至名归吗? 如何申请安电表 如何申请独立电表 用电量大可以增加电表吗 出租他人铺面,原先房东已经安装过电表,因为用电量大,我想自己装电表可以... 梦见有个老人送佛画给我、让我在家供佛 ...分之一米还剩多少米如果截去四分之一还剩几分之几还剩多少米?_百度... 一根竹竿长四米,截去它的四分之三后,这根竹竿还剩全长的几分之几? ...这根绳子的几分之几后还剩下他的3/1,用去了( )m,还剩下( )_百度知... 给朋友借钱,该打借条还是欠条呢? 朋友向我借钱,打欠条好,还是打借条好 朋友之间借钱写借条还是欠条 周公解梦大全查询梦见猫咬自己? 姓邱,求男孩名字,第一个字草字头,第二个字禾字旁,有意义的,最好是能把意义写上,谢谢大家 带单人旁,草字头,禾字旁的男孩名字,父亲姓成 求带禾字旁和木字旁名字男孩姓邱 2015年羊年男孩,1o月30日出生,想取名字带禾字旁或宝盖头的字,求帮忙 禾字旁好听的男孩名字 有多少禾字旁11画的字? (取名字用的) 请问女性更年期大概多少岁?更年期有什么症状? 女人更年期在多少岁间,有什么表现 安卓手机如何与车的中控屏进行互联? 苹果为什么要推出红色iPhone手机 尔康是什么意思? win10系统workstation无法启动,Redirected Buffering Sub System 服务启动失败。 请帮我翻译一段英文 You will be redirected to our secure gateway是什么意思 英语简短翻译 帮我翻译下 <惊叹号>全部歌词 python进程间通信queue 是消息队列吗 python有1000个url请求 放到queue 再十个线程 这样输出的数据是乱的... 如何优雅的编写Python并发程序 您可以组什么词 您能组什么词? 您组词能组几个词组请帮忙回答 怎样判断男人是否真的爱你? 您可以组什么词语 怎么才能知道对方是不是真的爱你呢? 您,能组哪些词? 在感情中,如何分辨男人是不是真的爱你? 您能组什么词 您能组什么词语 他是不是真的爱你,无需频繁追问,看他哪些表现就能心知肚明? 该如何知道对方是不是真的喜欢你? 如何判断一个男人是否真的爱你 如何才能知道一个男人是不是真心爱你? 你有可以组什么词 你能组成哪些字 从哪些细节可以看出对方是不是真的爱你?