我用线程编写了一个程序,但由于它占用大量CPU,线程并不能提高任何性能,所以我开始研究多处理。我现在编写的所有代码uptill都牢记两个线程可以处理相同的全局变量,但据我所知,这在多处理中是不可能的。
有没有什么方法可以在不重写整个代码的情况下完成这样的操作?
我只需要做一些计算,并在第二个过程中更改一些变量的值。
我打算实现的一个简单例子:
target=list()
queue=list()
def func(a,b,target):
temp=list()
for i in range(0,a):
for j in range(0,b)
temp.append('a'+str(i)+'b'+str(j))
target=list()
def process_func():
go=True
while go:
target_=queue.pop(0)
func(target[0],target[1],target[2])
if __name__=='__main__':
p=multiprocessing.Process(target=process_func)
p.start()
主要功能是将列表添加到队列中。我不知道怎么做这样的事。我的主要目标是以一种对现有代码进行最小更改的方式来完成这项工作。
我想我能做的是使用多处理模块中的队列,但我不知道如何准确地实现它们,因为我能找到的教程会导致我的代码发生很大变化。
https://docs.python.org/3/library/multiprocessing.html#sharing-进程之间的状态
你可以在上面阅读很多内容。但是,如何在Python中使用多处理队列?解释了关于multiprocessing.Queue
,在这种情况下,进程A和进程B应该被赋予队列对象作为从其消费的输入。