python multiprocessing使用问题

 同步管理精英 发布于 2022-11-06 16:38

自己在做一个python的小程序时要用到python multiprocessing.dummy,搜到一些资料用map啥的,但还是有一些困惑。
我把问题抽象下就是:我要找100内一个特定的数(比如89,额,不要吐槽得用二分啥的,这里我只是抽象下),我开4个线程,每个线程循环25个数查找(1-25,26-50...),在第四个线程判断时找到89,线程退出,同时其他三个线程也立即终止。请问以上的操作我该怎么编写出python,希望能给出简单源码学习,不甚感激啊!

1 个回答
  • 首先你需要理解的一点是CPython的Multiprocessing模块实现的并不是多线程,而是多进程。这主要是因为操作系统对于解释器的限制。
    你说的这个需求有多种方式可以实现,下面的代码是使用信号量的方式:

    import multiprocessing
    
    def f (start, end, target, fin):
        for i in range(start, end+1):
            if fin.is_set():
                print 'Other process found target, exit'
                return
            if i == target:
                print 'Target: ' + str(target) + ' Found'
                fin.set()
                return
    
    
    if __name__ == "__main__":
        fin = multiprocessing.Event()
        size = 24
        target = 89
        for start in (1, 26, 51, 76):
            multiprocessing.Process(target = f, args = (start, start+size, target, fin)).start()
    
    2022-11-12 01:48 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有