Python中的多线程/多进程函数
Python是一种高级编程语言,具有快速开发原型和脚本能力。Python具有内置的多线程和多进程功能,这使得在编写高并发度的程序时变得更加便捷。在这篇文章中,我们将探讨Python中多线程和多进程函数的使用和实现。
多线程
Python中的多线程允许同时执行多个任务。它需要使用Python内置的线程模块。线程模块提供了Thread类,可以用它来创建线程。
创建线程:
要创建线程,我们需要使用Thread类的构造函数。函数的语法如下:
thread = Thread(target=function, args=args)
其中,target是要运行的函数的名称,args是该函数的参数列表。创建线程后,可以使用start()方法启动线程。
例子:
这里是一个简单的多线程示例,包含一个计数器函数和一个打印计数器值的函数。
from threading import Thread
def counter():
for i in range(10):
print("count",i)
def printer():
for i in range(10):
print("print",i)
thread1 = Thread(target=counter)
thread2 = Thread(target=printer)
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print("done")
在这个例子中,我们定义了两个函数counter()和printer(),然后分别创建了两个线程thread1和thread2。我们在主线程中启动了这两个线程,然后使用join()方法将主线程挂起,等待线程完成。最后,我们打印“done”表示程序已完成运行。
多进程
不同于多线程,多进程是运行于多个独立的进程之中。Python提供了一个内置的多进程模块multiprocessing,使用它可以轻松地创建多个进程来执行任务。multiprocessing模块支持通过使用Process类来创建新的进程。
创建进程:
要创建进程,我们需要使用Process类的构造函数。函数的语法如下:
proc = Process(target=function, args=args)
其中,target是要运行的函数的名称,args是该函数的参数列表。创建进程后,可以使用start()方法启动进程。
例子:
这里是一个简单的多进程示例,包含一个计数器函数和一个打印计数器值的函数。这里我们将函数定义为类的方法,以便可以使用类的属性。
from multiprocessing import Process
class MyProcess():
def __init__(self):
self.count = 0
def counter(self):
for i in range(10):
self.count += 1
print("count",self.count)
def printer(self):
for i in range(10):
print("print",self.count)
if __name__ == "__main__":
my_proc = MyProcess()
proc1 = Process(target=my_proc.counter)
proc2 = Process(target=my_proc.printer)
proc1.start()
proc2.start()
proc1.join()
proc2.join()
print("done")
在这个例子中,我们定义了一个类MyProcess,它包含了一个计数器函数和一个打印计数器值的函数。我们实例化了这个类,然后分别创建了两个进程proc1和proc2。我们在主进程中启动了这两个进程,然后使用join()方法将主进程挂起,等待进程完成。最后,我们打印“done”表示程序已完成运行。
总结
Python提供了内置的多线程和多进程函数,这使得编写高并发度的程序变得非常便捷。我们可以使用Thread类和Process类来创建线程和进程,并使用start()方法启动它们。最后,我们使用join()方法将主线程或主进程挂起,等待线程或进程完成,并打印“done”表示程序已完成运行。
