如何在python中使用多个线程调用同一个函数?

如何在python中使用多个线程调用同一个函数?,python,multithreading,concurrency,parallel-processing,signal-processing,Python,Multithreading,Concurrency,Parallel Processing,Signal Processing,我正在用python开发一个信号处理应用程序。我想在python中使用多个线程调用同一个函数,以实现并发执行,有可能吗?如果是这样,怎么办?长话短说:不,因为 但是你可能想考虑使用进程而不是线程,这看起来是你的应用程序的真正需要(从你的解释中可以理解),因为看起来你不需要使用共享内存空间。 一个(非常)简单的例子: import multiprocessing def worker(num): """ Worker procedure """ print('Worker

我正在用python开发一个信号处理应用程序。我想在python中使用多个线程调用同一个函数,以实现并发执行,有可能吗?如果是这样,怎么办?

长话短说:不,因为

<>但是你可能想考虑使用进程而不是线程,这看起来是你的应用程序的真正需要(从你的解释中可以理解),因为看起来你不需要使用共享内存空间。 一个(非常)简单的例子:

import multiprocessing

def worker(num):
    """ Worker procedure
    """
    print('Worker:', str(num))

# Mind the "if" instruction!
if __name__ == '__main__':
    jobs = [] # list of jobs
    jobs_num = 5 # number of workers
    for i in range(jobs_num):
        # Declare a new process and pass arguments to it
        p1 = multiprocessing.Process(target=worker, args=(i,))
        jobs.append(p1)
        # Declare a new process and pass arguments to it
        p2 = multiprocessing.Process(target=worker, args=(i+10,))
        jobs.append(p2)
        p1.start() # starting workers
        p2.start() # starting workers
此示例将为您提供以下输出:

$ python multiprocessing_example.py

Worker: 0
Worker: 10
Worker: 1
Worker: 11
Worker: 2
Worker: 12
Worker: 3
Worker: 13
Worker: 4
Worker: 14
为了更好地利用多进程,我建议您学习一些关于GIL的知识,了解线程和进程之间的区别,特别是它如何加速或限制您想要做的事情以及如何进行


例如,如果您的瓶颈是I/O,则进行多处理将不会对您有所帮助,但如果您的处理受到CPU的限制,则会有所帮助。

这个问题非常广泛。您始终可以调用相同的函数。这不是问题。如果函数共享数据,则可能会出现问题。对于这一点,我们需要更多的细节。如果您真的希望在python中使用多线程执行
并发执行
,那么答案是:由于全局解释器锁,这是不可能的。您可以使用多进程来代替。@stephernauch我正在尝试实现一个LMS滤波器组。银行的每个分支机构都会获得唯一的数据进行处理。不过它们都有相同的功能。@Rollsthulfaher谢谢你