【学习】python每天进步一点点-多线程

本文介绍了Python中的多线程和多进程概念,对比了两者的差异。详细讲解了Process类的使用,包括构造方法、run()、start()和join()方法。还介绍了Pool类及其常用方法,如apply、map、apply_async和map_async。最后,探讨了进程间共享变量,包括Shared ctypes Objects和Manager类的应用。文章提供了丰富的示例和参考资料。
摘要由CSDN通过智能技术生成


AI第二次作业就想使用多进程加快一下速度,本地测试没有问题,但平台上通不过,当时OJ没有提供报错原因,最后放弃使用。这次AI由于时间限制一定需要多进程了,所以就来好好学习一下(代码来源于参考资料)

1. 多线程VS多进程

使用多线程,任务会被分为一个进程的多个子任务,通常这些线程是共用一块内存的,即 shared memory,所以如果有多个线程同时对同一块内存地址的修改,可能就会造成冲突。更安全的一种做法就是使用多进程,每个子进程的内存空间都是独立的,即 distributed memory,但子进程之间的通信可能会导致附加的 overhead。

NOTE:在Windows上要想使用进程模块,就必须把有关进程的代码写在当前.py文件的if __name__ == '__main__' :语句的下面,才能正常使用Windows下的进程模块。Unix/Linux下则不需要。

2. Process类

例子
import multiprocessing as mp
import random
import string

random.seed(123)

# Define an output queue
output = mp.Queue()

# define a example function
def rand_string(length, output):
    """ Generates a random string of numbers, lower- and uppercase chars. """
    rand_str = ''.join(random.choice(
                        string.ascii_lowercase
                        + string.ascii_uppercase
                        + string.digits)
                   for i in range(length))
    output.put(rand_str)

# Setup a list of processes that we want to run
processes = [mp.Process(target=rand_string, args=(5,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值