吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2020|回复: 4
收起左侧

[Python 转载] pyhton3 进程(猴子搬玉米)

[复制链接]
Cool_Breeze 发表于 2021-1-19 16:44
本帖最后由 Cool_Breeze 于 2021-1-19 17:25 编辑

主进程就收任务,不管前面任务是否完成,都将其关闭,然后新开进程处理当前任务!(像似猴子搬玉米)
不知道在写啥!思路不清晰。(本来想写线程的,但是好像线程无法中途终止,有知道的大佬请提点一下!)

执行结果:
dict_keys([])
输入 q 退出主程序!
请输入运行程序名:a
dict_keys(['a'])
输入 q 退出主程序!
请输入运行程序名:程序 a 即将在 10 秒后停止
程序 a 即将在 9 秒后停止
程序 a 即将在 8 秒后停止
d程序 a 即将在 7 秒后停止

========================
程序 a 已停止
========================
dict_keys(['d'])
输入 q 退出主程序!
请输入运行程序名:程序 d 即将在 10 秒后停止
程序 d 即将在 9 秒后停止
程序 d 即将在 8 秒后停止
c
========================
程序 d 已停止
========================
dict_keys(['c'])
输入 q 退出主程序!
请输入运行程序名:程序 c 即将在 10 秒后停止
程序 c 即将在 9 秒后停止
程序 c 即将在 8 秒后停止
程序 c 即将在 7 秒后停止
程序 c 即将在 6 秒后停止
程序 c 即将在 5 秒后停止
程序 c 即将在 4 秒后停止
程序 c 即将在 3 秒后停止
c
****************************
程序 c 正在运行中...
****************************
dict_keys(['c'])
输入 q 退出主程序!
请输入运行程序名:程序 c 即将在 2 秒后停止
程序 c 即将在 1 秒后停止


[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# coding=utf-8
# python 3.7.9
 
import multiprocessing
import time
 
class myProcess(multiprocessing.Process): # 单继承
    def __init__(self, name, n):
        super().__init__() # 初始化进程
        self.name = name
        self.n = n
        self.daemon = True # 跟随主进程结束
     
    def run(self):
        while self.n:
            print(f'程序 {self.name} 即将在 {self.n} 秒后停止')
            self.n -= 1
            time.sleep(0.6)
        exit(0)
         
 
    def kill(self): # 重写kill,添加一点内容
        super().kill()
        print('========================')
        print(f'程序 {self.name} 已停止')
        print('========================')
 
 
if __name__ == '__main__':
    '''
    输入程序名,启动程序(只能运行一个程序)
    程序已在运行中,提示正在运行
    程序不在运行中,停止前一个程序,然后在启动新程序
    '''
    pool = {}
    while True:
        print(pool.keys())
        name = input('输入 q 退出主程序!\n请输入运行程序名:')
         
        if name in pool.keys(): # 检查程序是否已在运行(不做任何事)
            if pool[name].is_alive():
                print('****************************')
                print(f'程序 {name} 正在运行中...')
                print('****************************')
            else:
                pool.pop(name)
                pool.update({name:myProcess(name, 10)})
                pool[name].start()
         
        elif name == 'q': break # 退出主程序
         
        else:
            if len(pool) == 1: # 检查是否有一个进程在运行(有就结束它)
                oldName = list(pool.keys())[0]
                if pool[oldName].is_alive(): # 检查进程是否存活(存活结束它)
                    pool[oldName].kill()
                    pool.pop(oldName)
                 
            pool.update({name:myProcess(name, 10)})
            pool[name].start()
                

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

丶优雅 发表于 2021-1-19 16:52
我觉得 我喝完酒之后 然后在看你代码 就可以告诉你怎么做。 但是我清醒的时候感觉 就有点困难
 楼主| Cool_Breeze 发表于 2021-1-19 17:21
丶优雅 发表于 2021-1-19 16:52
我觉得 我喝完酒之后 然后在看你代码 就可以告诉你怎么做。 但是我清醒的时候感觉 就有点困难

给老哥看困了,我的我的!
xjshuaishuai 发表于 2021-1-19 18:12
fanvalen 发表于 2021-1-20 00:27
有点混乱,前段时间我也写了多任务的需求没写那么复杂,需要看我贴就ok
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-8-29 08:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表