首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏侯哥的Python分享

    MySQL高级11-后台进程

      MySQL的服务实现通过后台多个线程、内存池、文件交互来实现对外服务的,不同线程实现不同的资源操作,各个线程相互协助,共同来完成数据库的服务。MySQL常用的后台线程概括如下,分为Master Thread,IO Thread,Purge Thread,Page Cleaner Thread

    69931编辑于 2023-09-21
  • 11 Python 进程与线程编程

    1、什么是进程和线程? 首先我们要知道进程是系统进行资源分配和调度的基本单位,而线程是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。 进程之间是无不干扰的,然后 name 是主进程,主进程没有了干扰,所以就直接执行了。 2.2 阻塞 如果我们想要让两个 子进程先执行完毕再执行主进程这个就可以使用到join。 我们来优化一下代码。 3、 进程池和进程锁 由于每个进程都会消耗内存和cpu 资源,所以我们不能无限创建进程,这样有可能会发生系统的死机的情况。 为了解决这个问题,我们可以使用多线程来替代,或者进程池。 3.1 进程池 我们现在知道,进程不能创建太多,太多容易造成系统死机 ,所以我们要固定进程的创建数量,这个时候借助进程池的帮助。 我们可以认为进程池就是个池子,在这个池子创建好一定数量的进程 。 比如上面这张图中的一个正方形的池子,里面有六个进程,这六个进程会伴随着进程池一起被创建。

    57610编辑于 2022-11-07
  • 来自专栏sktj

    python 多进程 (并行编程 11)

    range(5): p=multiprocessing.Process(target=foo,args=(i,)) pros.append(p) p.start() p.join() 线程和进程性能 + str(count)) if name == 'main': for i in range(2, 5): p = MyProcess(i) p.start() daemon=True 守护进程在主进程结束马上终止 < 5: i += 1 print(f'第{i}秒') time.sleep(1) if name == 'main': Process(target=wahaha).start() #子进程在主进程结束后仍然正常执行 p = Process(target=func,args=(1,)) p.daemon = True #主进程结束,该守护进程结束 p.start() time.sleep(3) print (f'pid:{os.getpid()},ppid:{os.getppid()}') print('主进程结束') p.terminate() 进程终止

    75220发布于 2019-07-30
  • 来自专栏Android 研究

    Android跨进程通信IPC之11——AIDL

    2、如果使用AIDL 3、AIDL的原理 那我们开始围绕这三个问题开始一次接待 二、为什么要设置AIDL 两个维度来看待这个问题: (一) IPC的角度 设计这门语言的目的是为了实现进程间通信,尤其是在涉及多进程并发情况的下的进程间通信 每一个进程都有自己的Dalvik VM实例,都有自己的一块独立的内存,都在自己的内存上存储自己的数据,执行着自己的操作,都在自己的那个空间里操作。每个进程都是独立的,你不知我,我不知你。 13936966f3097ecab148b88871eeb79b0a9fe984/output/aidl -I/Users/gebilaolitou/.android/build-cache/fb883931c2e88ee11d0e77773aa01a2e67652940 在服务端和客户端也可以照常使用这个.java类进行跨进程通信。 ,也是一个代理类,在这个代理中实现跨进程通信。

    1.9K10发布于 2018-08-30
  • 来自专栏CSIG质量部压测团队

    【项目实战-11进程莫名被杀,真相是...

    问题影响: 15%的请求会出502 【问题现象】 通过strace attach到进程看到发生了segfault,进程被系统信号SIGSEGV强杀。 23.png 【问题分析与排查思路】 进程被SIGSEGV强杀,第一反应是去找coredump,cordump是进程在退出前由操作系统把进程当前的内存转存到一个core文件中。 排除 进程捕获了SIGSEGV信号 查看/proc/pid/status发现sigCgt为0x0000000184004a07,SIGSEGV并未被进程捕获。 排除 25.png linux支持对每个进程进行dumpable标记,dumpable被设置为SUID_DUMP_DISABLE(0) 的进程不会输出core。 PHP 7之后进程默认不会输出core。

    1.2K10发布于 2021-02-23
  • 来自专栏嵌入式ARM和Linux

    Linux内核11-进程之间的关系

    进程P0依次创建了P1、P2和P3。继而,进程P3创建了P4。 更进一步讲,进程之间还有其它关系:一个进程可以是进程组的组长或者login会话的组长,还可以是线程组的组长,还可以追踪其它进程的执行。 表3-4 进程描述符中建立非父子兄弟关系的数据成员 成员名称 描述 group_leader 进程P的进程组组长的进程描述符 signal->pgrp 进程P的进程组组长的PID tgid 进程P的线程组组长的 pid_hashfn(x) hash_long((unsigned long) x, pidhash_shift) 其中,pidhash_shift参数是哈希表索引所占的位数,在我们的例子中需要2048项,也就是2^11 ,所以pidhash_shift=11。 unsigned long hash = val * 0x9e370001UL; return hash >> (32 - bits); } 因为在我们的示例中,pidhash_shift等于11

    1K20编辑于 2022-08-10
  • 来自专栏Vamei实验室

    Python标准库11进程探索 (multiprocessing包)

    在初步了解Python多进程之后,我们可以继续探索multiprocessing包中更加高级的工具。这些工具可以让我们更加便利地实现多进程进程进程池 (Process Pool)可以创建多个进程。这些进程就像是随时待命的士兵,准备执行任务(程序)。一个进程池中可以容纳多个待命的士兵。 ? 如果进程运行结束后,还有需要处理的元素,那么的进程会被用于重新运行f()函数。除了map()方法外,Pool还有下面的常用方法。 close()  进程池不再创建新的进程 join()   wait进程池中的全部进程。必须对Pool先调用close()方法才能join。 练习 有下面一个文件download.txt。 Process对象代表的进程

    75150发布于 2018-01-18
  • 来自专栏Ywrby

    11-进程调度的时机,方式,切换与过程

    进程调度 进程调度(低级调度),就是按照某种算法从就绪队列中选择一个进程为其分配处理机 需要进行进程调度与切换的情况(进程调度的时机) 1. 当前运行的进程主动放弃处理机 进程正常终止 运行过程中发生异常而终止 进程主动请求阻塞(如等待I/O设备) 2. 适合于分时操作系统、实时操作系统 进程的切换与过程 “狭义的进程调度”与“进程切换”的区别: 狭义的进程调度指的是从就绪队列中选中一个要运行的进程。 (这个进程可以是刚刚被暂停执行的进程,也可能是另一个进程,后一种情况就需要进程切换) 进程切换是指一个进程让出处理机,由另一个进程占用处理机的过程。 广义的进程调度包含了选择一个进程进程切换两个步骤。

    80221编辑于 2022-10-27
  • 来自专栏有趣的django

    11.多线程、多进程和线程池编程

    future in as_completed(all_task): data = future.result() print(data) #已经成功的task函数的return 11.5.进程间通信 my_producer.start() my_consumer.start() my_producer.join() my_consumer.join() 11.6.进程间通信 manger中的queue queue = Manager().Queue(10) pool = Pool(2) #创建进程池 pool.apply_async(producer args=(queue, )) pool.apply_async(consumer, args=(queue, )) pool.close() pool.join() 11.7.进程间通信 - Pipe pipe实现进程间通信(只能两个进程之间) #Pipe进程间通信 from multiprocessing import Process, Pipe def producer(pipe

    55120发布于 2019-08-26
  • 来自专栏C++/Linux

    【Linux修炼】11.进程的创建、终止、等待、程序替换

    进程终止 2.1 进程退出码 2.2 进程如何退出 3. 进程等待 3.1 进程等待的原因 3.2 进程等待的方法 3.3 再谈进程退出 3.4 进程的阻塞和非阻塞等待 4. 在linux中fork函数是非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。 而由于子进程多,父进程想具体调用某一个子进程时就需要这个子进程得有一个名字才能调用这个子进程,因此给父进程返回对应子进程的pid。 3. 这就是父进程通过进程等待回收了僵尸进程(子进程)。 2. 如果子进程出异常了,那么父进程也能够抓到,为了演示这种情况我们在子进程中增加一个野指针的错误: 此时的退出码为0,代表的是子进程的退出码,而终止信号是11号错误,对于异常的进程退出,他的退出码是没有意义的

    6.6K00编辑于 2023-03-28
  • 来自专栏拭心的安卓进阶之路

    Android 进阶11进程通信之 ContentProvider 内容提供者

    它的诞生就是为了给不同应用提供内容访问,自然在我们研究的“多进程通信方式”之中。 ContentProvider 封装了数据的跨进程传输,我们可以直接使用 getContentResolver() 拿到 ContentResolver 进行增删改查即可。 android:process=":provider" android:readPermission="top.shixinzhang.permission.READ_CONTENT"> 因为我们要测试跨进程通信 ,因此这里将 provider 声明为另外一个进程 android:process=":provider"。 我们在另外一个进程的 provider 中打了些 Log,可以看到被调用了: ?

    3.1K100发布于 2018-01-05
  • 来自专栏游戏开发司机

    UNIX(进程间通信):11 共享内存到底是什么

    共享内存是System V版本的最后一个进程间通信方式。共享内存,顾名思义就是允许两个不相关的进程访问同一个逻辑内存,共享内存是两个正在运行的进程之间共享和传递数据的一种非常有效的方式。 不同进程之间共享的内存通常为同一段物理内存。进程可以将同一段物理内存连接到他们自己的地址空间中,所有的进程都可以访问共享内存中的地址。 如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段共享内存的任何其他进程。 这样当一个进程进行写操作,另一个进程读操作就可以实现进程间通信。但是,我们要确保一个进程在写的时候不能被读,因此我们使用信号量来实现同步与互斥。 但是,共享内存也并不完美,共享内存并未提供同步机制,也就是说,在一个服务进程结束对共享内存的写操作之前,并没有自动机制可以阻止另一个进程(客户进程)开始对它进行读取。

    2K21发布于 2021-03-04
  • 来自专栏韩曙亮的移动开发专栏

    【Android 进程保活】Android 进程优先级 ( 前台进程 | 可见进程 | 服务进程 | 后台进程 | 空进程 )

    文章目录 一、Android 进程优先级 二、前台进程 三、可见进程 四、服务进程 五、后台进程 六、空进程 一、Android 进程优先级 ---- Android 进程优先级 : ① 前台进程 > ② 可见进程 > ③ 服务进程 > ④ 缓存进程 > ⑤ 空进程 ; 关键优先级进程 : ① 活动进程 ; 高优先级进程 : ② 可见进程 , ③ 服务进程 ; 低优先级进程 : ④ 后台进程 , ⑤ 空进程 ; Android 系统中会尽量保证优先级高的进程的存在时间尽可能长 ; 如果资源不足 ( 这里的资源最主要的是内存 ) , 为了可以新建进程 , 以及重要进程的运行 , 系统会杀死一些低优先级进程 如弹出对话框 , 对话框是前台进程 , 后面被覆盖的 Activity 就变成了可见进程 ; 绑定在 可见 Activity 组件上的 Service 进程 , 也被称为可见进程 ; 可见进程也是很重要的进程 , 除非为了保证前台进程的运行 , 一般不会被回收 ; 四、服务进程 ---- ① 服务进程 : 调用 startService 方法启动的 Service 进程组件 , 就是服务进程 , 其没有与

    3.3K20编辑于 2023-03-29
  • 来自专栏c/c++学习与分享

    Linux:进程地址空间、进程控制(一.进程创建、进程终止、进程等待)

    创建子进程规则是:子进程与父进程共享代码,写时拷贝 进程调用fork,当控制转移到内核中的fork代码后,内核做: 分配新的内存块和内核数据结构给子进程 将父进程部分数据结构内容拷贝至子进程 SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11 设置进程ID:操作系统为每个新进程分配一个唯一的进程ID(PID),用于在系统中唯一标识该进程。 添加到进程列表:新创建的进程会被添加到系统的进程列表中,以便操作系统可以对其进行管理和调度。 更新进程列表:操作系统会从进程列表中移除已终止的进程。 5.进程等待 5.1必要性 在Unix/Linux系统中,当子进程退出时,它的进程描述符仍然保留在系统中,直到父进程通过某种方式获取其退出状态。 在父进程中,wait 方法常被用来回收子进程的资源并获取子进程的退出信息,从而避免产生僵尸进程。 wait 函数允许父进程等待其子进程结束,并可以获取子进程的退出状态。

    98200编辑于 2024-05-25
  • 来自专栏c/c++&&linux

    【Linux】Linux进程控制>进程创建&&进程终止&&进程等待&&进程程序替换

    1.进程创建 1.1 fork函数 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。 新进程为子进程,而原进程为父进程 #include <unistd.h> pid_t fork(void); 返回值:自进程中返回0,父进程返回子进程id,出错返回-1 进程调用fork,当控制转移到内核中的 fork代码后,内核做: 分配新的内存块和内核数据结构给子进程 将父进程部分数据结构内容拷贝至子进程 添加子进程到系统进程列表当中 fork返回,开始调度器调度 当一个进程调用fork之后,就有两个二进制代码相同的进程 具体见下图: 1.3 fork常规用法 一个父进程希望复制自己,使父子进程同时执行不同的代码段。例如,父进程等待客户端请求,生成子进程来处理请求 一个进程要执行一个不同的程序。 shell建立一个新的进程,然后在那个进程中运行ls程序并等待那个进程结束 然后shell读取新的一行输入,建立一个新的进程,在这个进程中运行程序 并等待这个进程结束。

    3.4K10编辑于 2024-06-04
  • 来自专栏Python 学习

    day37(多进程)- 多进程、守护进程进程

    1.父进程中什么一个n = 100 p = Process(target=func) p.start() p.join() # 4.等待子进程结束 print('父进程号 :', os.getpid(), ',n值是', n) # 运算结果如下,证明力子进程和父进程之间的数据内存是完全隔离的 数据隔离的结果: 子进程号: 10428 ,n值是: 0 父进程号 1) print('p进程是否存活->', p_obj.is_alive()) 5.关于如何使用进程锁 # 本质上多进程的时候,阻塞其他进程,只允许一个进程操作 # # # 任何进程只要使用了同一个锁对象 import Process, Lock import time def action(pro, lock): # 上锁 # 本质上多进程的时候,阻塞其他进程,只允许一个进程操作 , lock): # 上锁 # 本质上多进程的时候,阻塞其他进程,只允许一个进程操作 print(pro, '进入了程序') lock.acquire() print

    1.2K00发布于 2019-07-27
  • 来自专栏c/c++学习与分享

    Linux:进程概念(二.查看进程、父进程与子进程进程状态详解)

    2.父进程与子进程 2.1介绍 在操作系统中,当一个进程(称为父进程)创建另一个新进程(称为子进程)时,父子进程之间建立了一种特殊的关系。 这种关系具有以下特点和行为: 父子关系: 子进程的父进程是创建它的进程,即父进程。 每个进程都有唯一的父进程。 PID关系: 子进程的PID(进程标识符)是由父进程调用fork()或类似系统调用创建的。 子进程的PPID(父进程标识符)与创建它的父进程的PID相同。 几乎所有进程都是由其他进程创建的,因为通常情况下,操作系统启动时会先创建一个初始进程(通常是init进程或systemd),然后其他进程都是由这些初始进程创建的。 下面是对这两个返回值的解释: 给父进程返回子进程的 PID:在父进程中,fork 返回新创建子进程进程 ID(PID),这个 PID 是子进程的标识符,父进程通过这个 PID 可以识别并操作子进程

    5.2K10编辑于 2024-05-07
  • 来自专栏csdn-nagiY

    【Linux】进程控制:理解什么是进程创建,进程终止,进程等待 | 进程替换

    一.进程创建 fork函数创建进程,新进程为子进程,原进程为父进程; fork函数包含在头文件 <unistd.h> 进程调用fork,当控制转移到内核中的fork代码后,内核做: 分配新的内存块和内核数据结构给子进程 将父进程部分数据结构内容拷贝至子进程 添加子进程到系统进程列表当中 fork返回,开始调度器调度 关于fork函数的返回值: 返回0给子进程 返回子进程的PID给父进程 创建失败,返回值 < 0 子进程和父进程共享 答案是父进程。子进程在退出时,会成为僵尸进程,需要父进程的回收。 那么父进程期望获得子进程退出时得哪些信息呢? .PHONY:all all: other1exe other2exe test other1exe:other1exe.cpp g++ -o $@ $^ -std=c++11 other2exe :other2exe.cpp g++ -o $@ $^ -std=c++11 test:test.c gcc -o $@ $^ -std=c99 .PHONY:clean clean: rm -

    90510编辑于 2024-01-23
  • 来自专栏ephemerals__的技术专栏

    【Linux】进程(1)进程概念和进程状态

    三、Linux下进程基本操作 C语言函数获取当前进程标识符和父进程的标识符(PID): getpid(); //返回当前进程标识符,返回值类型是pid_t getppid(); //返回当前进程的父进程标识符 命令行输入kill -9 (进程标识符) 四、父进程和子进程 一个进程通过系统调用创建出的另一个进程称之为该进程的子进程,反之该进程称为其父进程。 子进程在创建成功后,fork函数会给子进程返回0,给父进程返回子进程的PID。为什么会给父子进程不同的返回值呢? 因为一个父进程可能会有多个子进程,给父进程返回子进程的PID,更方便父进程对子进程进行管理。而子进程如果想要知道父进程的PID,直接调用getppidh函数即可。 当父进程先死亡,子进程就会被1号进程领养,成为新的父进程,此时该子进程就被称作孤儿进程

    1.1K00编辑于 2025-03-16
  • 来自专栏oeasy教您玩转linux、python

    python0031_挂起进程_恢复进程_进程切换

    不断输出时间ctrl+c结束进程​编辑 我想看到 python3 这个进程 可能吗? foreground foreground(前台) fg 命令把 后台 进程放回 前台把挂起的进程重新又放到前台cpu又可以给这个进程用了​编辑但是这个我怎么知道他到后台是否暂停了呢? 重启进程 先将进程放回前台 再ctrl + c结束这个进程​编辑 最后重新运行 python3 show_time.py 这样硬盘中修改了的python文件 就会被作为新进程重新载入内存新修改就生效了这个 暂停 运行程序后 挂起进程等待一段时间恢复进程​编辑 还是从5开始 没有在后面偷偷跑 如果我就想让这个进程 在后台偷偷跑呢? 总结 进程前后台切换 ctrl + z 把当前进程切换到后台并暂停用 fg 可以把进程再切回前台用 bg 可以让进程在后台持续运行但是问题就是根本停不下来!

    4.3K00编辑于 2022-12-21
领券