如何在python中同时运行两个同步进程

如何在python中同时运行两个同步进程,python,multithreading,multiprocessing,python-multiprocessing,python-multithreading,Python,Multithreading,Multiprocessing,Python Multiprocessing,Python Multithreading,让两个进程function1、function2同时运行。 函数1//连续追加列表 function2//从function1获取列表,从列表中获取所有数据并复制到另一个列表,刷新原始列表并处理复制的列表 sample code: list_p =[] def function1(data): list_p.append(data) def function2(list_p): list_q = list_p.copy() list_p.flush()

让两个进程function1、function2同时运行。 函数1//连续追加列表 function2//从function1获取列表,从列表中获取所有数据并复制到另一个列表,刷新原始列表并处理复制的列表

sample code:


list_p =[]
def function1(data):
     list_p.append(data)

def function2(list_p):
      list_q = list_p.copy()
      list_p.flush()
      x= process(list_q)
      return x

while True:
    //coming data continously
    function1(coming data)
因此,如何同时使用function1和function2,以便我可以从function1获取数据并刷新它(刷新后,开始从0向function1中追加索引),同时列表可以追加到function1中

同时,function1可以追加列表,function2可以处理新列表,在完成function2的处理后,它再次获取function2处理时追加的原始列表中的所有数据


继续

下面是一个使用
线程的示例。我在producer中使用了
input
函数来代替数据流。(这是基于。)


请阅读Python GIL。Python可能不是完成此任务的最佳语言。如果您必须使用Python,可能不在线程中执行、在循环中执行或在函数之间使用持久存储。您可以使用队列类,它支持多线程:如果您不使用队列或任何其他同步机制,您还可以在google上搜索“生产者-消费者问题”,那么您的代码将始终使用100%的CPU,即使列表为空,as函数2也会持续执行。对于队列,函数2将一直处于休眠状态,直到真正有数据要处理为止。正如@Alex所提到的:使用的性能智能多线程可能不一定会提高您的性能,但这取决于传入数据来自何处以及调用的函数
process()
。下面是一个线程类示例:@Alex您能解释或共享与“函数之间的持久存储”相关的任何链接吗“非常感谢你,@marke;这真的很有帮助。你救了我一天:P
from threading import Thread
from queue import Queue

q = Queue()
final_results = []

def producer():
    while True:
        i = int(input('Give me some number: '))  # here you should get data from data stream
        q.put(i)


def consumer():
    while True:
        number = q.get()
        result = number**2
        final_results.append(result)
        print(final_results)
        q.task_done()

t = Thread(target=consumer)
t.daemon = True
t.start()

producer()