python实现多进程和多线程

目录

一:介绍

二:多线程实现

三:多进程实现


一:介绍

Python 的多线程和多进程都是实现并发执行的方式,但它们有一些关键的区别:

  1. 线程共享进程的资源,而进程拥有自己的资源。这意味着线程之间的数据共享和通信比较方便,但多个进程之间的数据共享和通信需要使用特定的机制(如管道、队列等)。
  2. 线程的创建、切换和销毁的开销相对较小,因此多线程更适合于 I/O 密集型任务。而进程的创建、切换和销毁的开销较大,因此多进程更适合于计算密集型任务。
  3. 线程之间的同步和通信比较方便,可以使用 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()

python实现多进程和多线程_第1张图片

你可能感兴趣的:(python开发,python,开发语言)