目录
一:介绍
二:多线程实现
三:多进程实现
一:介绍
Python 的多线程和多进程都是实现并发执行的方式,但它们有一些关键的区别:
- 线程共享进程的资源,而进程拥有自己的资源。这意味着线程之间的数据共享和通信比较方便,但多个进程之间的数据共享和通信需要使用特定的机制(如管道、队列等)。
- 线程的创建、切换和销毁的开销相对较小,因此多线程更适合于 I/O 密集型任务。而进程的创建、切换和销毁的开销较大,因此多进程更适合于计算密集型任务。
- 线程之间的同步和通信比较方便,可以使用 Python 的 threading 模块提供的各种同步机制。而进程之间的同步和通信需要使用操作系统提供的机制,如信号量、消息队列等。
总的来说,Python 的多线程和多进程都是实现并发执行的有效方式,但具体选择哪种方式取决于任务的类型和需求。对于 I/O 密集型任务,多线程可能更合适;对于计算密集型任务,多进程可能更合适。
二:多线程实现
#!/usr/bin/python
#coding=utf-8
import threading
import time
class myThread(threading.Thread): #继承父类threading.Thread
def __init__(self, threadID, name, counter):
threading.Thread.__init__(self)
self.threadID = threadID #线程id
self.name = name #名字
self.counter = counter #执行次数
def run(self): #将要执行的代码写到run函数里面 线程在创建后会直接运行run函数
print "Starting " + self.name
print_time(self.name, self.counter, 5)
print "Exiting " + self.name
def print_time(threadName, delay, counter): #定义三个参数,线程名,延迟,次数
while counter:
time.sleep(delay)
print "%s" % threadName + 'hello'
counter = counter - 1
#create a new thread
thread1 = myThread(1, "Thread1", 1)
thread2 = myThread(2, "Thread2", 2)
#open the thread
thread1.start()
thread2.start()
三:多进程实现
import multiprocessing
def worker():
"""这是进程执行的函数"""
print("Worker process is running")
if __name__ == '__main__':
# 创建进程池。
pool = multiprocessing.Pool()
# 启动多个进程
for i in range(5):
pool.apply_async(worker)
# 关闭进程池
pool.close()
pool.join()