即时通讯系统搭建的必要性与AI优化策略探讨
850
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()
如果需要将一个值传给子线程,可以将该值作为参数:
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小时内删除侵权内容。