python多进程共享变量

网友投稿 811 2022-05-29

我们在使用Python开发应用时,为了提高性能,往往会考虑使用并发。需要注意的是,python的多线程不是并发的,所以我们应该选择多进程multiprocessing。创建子进程的方法:

from multiprocessing import Process

def func_entry():

print("I am sub process")

sub_process = Process(target=func_entry)

sub_process.start()

python多进程共享变量

如果需要将一个值传给子线程,可以将该值作为参数:

from multiprocessing import Process

def func_entry(flag):

print("I am sub process, flag ", flag)

flag = 1

sub_process = Process(target=func_entry, args=(flag))

sub_process.start()

注意:这里flag必须定义在创建子进程之前,并且传入的flag是当前的值,父进程中在Process调用后再修改flag,func_entry函数是感知不到的。

那么如何让flag可以在父子进程之间都感知到变化呢?可以使用multiprocessing的共享变量

import time

from multiprocessing import Process, Manager

def func_entry(flag):

while flag.value < 100:

print("I am sub process, flag ", flag.value)

time.sleep(0.0001)

#这里创建了一个int类型('i'表示类型为整型)的共享变量,初值为1

flag = Manager().Value('i', 1)

sub_process = Process(target=func_entry, args=(flag))

sub_process.start()

while flag.value < 150:

print("I am father process, flag ", flag.value)

time.sleep(0.0001)

flag.value += 1

这样无论在子进程还是父进程中修改flag的值,在另外一个进程中都能感知到

昇腾

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:黑客Alex Tapanaris与PDF文档
下一篇:html5测试题整理--针对标签的概念性
相关文章