V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  zictos  ›  全部回复第 109 页 / 共 132 页
回复总数  2623
1 ... 105  106  107  108  109  110  111  112  113  114 ... 132  
2020-12-31 16:35:16 +08:00
回复了 zictos 创建的主题 Python Python 如何一次性终止某个子进程下面的所有子进程?
@julyclyde #23
针对 21 楼的代码,childlist 就已经包含了所有子进程对象了,直接用 for 遍历再逐个 kill 自然就是把所有子进程都杀死了。
最后一行 psutil.Process(pid).kill()是杀死 pid 为传入的 pid 的进程,前面的 for 是杀死 pid 下面的子进程、孙进程……
2020-12-31 16:29:51 +08:00
回复了 Junzhou 创建的主题 程序员 GitHub 上的抢茅台工具,作者会被请去喝茶吗。
@kop1989 #5 你说直接请求接口,那不通过浏览器而直接发送 get 请求或 post 请求(没破解其他东西)是破坏计算机信息系统罪吗?这样的话很多自动化软件都是了啊!另外之前爬虫判刑有个理由是“伪造 UA”,有些爬虫也是直接发送请求的,不一定都是用模拟浏览器的方式
2020-12-30 18:44:46 +08:00
回复了 zictos 创建的主题 Python Python 如何一次性终止某个子进程下面的所有子进程?
写成函数,只要传入某个进程的 pid 就可以杀死该进程以及该进程下面的子进程。把 killprocess(pid)中的 pid 替换为要杀的进程的 pid 即可

def killprocess(pid):
****import psutil
****childlist = psutil.Process(pid).children(recursive=True)
****for i in childlist:
********i.kill()
****psutil.Process(pid).kill()
2020-12-30 18:02:06 +08:00
回复了 zictos 创建的主题 Python Python 如何一次性终止某个子进程下面的所有子进程?
@abersheeran #17
@JCZ2MkKb5S8ZX9pq #18

15 楼已经解决了,已经可以获取到子进程对象了,杀进程可以再加一个循环
for i in pidlist:
####i.kill()
@icy37785 #27 那我去哪里留意呢?网站申请时不需要登录,留邮箱也是索要发票才需要留,邮箱也只收到了发票,我邮件都会看的。这样的话有合同与没合同有什么关系呢?没纸质合同不代表没有事实上的合同,总不可能每次网购或者去店里消费也都签一份合同吧!网上页面显示的就都可以视为合同内容。
那敢问你说的打官司打赢了是哪一年的事?十几年前的事吗?官司打赢了后运营商才在合同上标注是吧?我办了很多次宽带,从来没见过合同,的确不知道合同具体内容是什么。包括我现在用的联通手机卡都是 2014 年在美团上买的,好像是本地营业厅做的团购,只问了我身份证号就直接把卡寄给我了,也是没任何其他合同。
@wunonglin #23 其实没合同对用户更好,合同一般是保护运营商的,运营商会写各种各样的格式条款,出现争议后就怪你没看。反正有工信部监管,没合同也不怕,只要能证明有办过宽带就行了。
我发现现在很多运营商办理业务时连纸质凭证都不提供了,我两年前去广州移动办理业务,就叫我在屏幕上签字,纸质凭证都没有。认真你就输了。
@wunonglin #18 湖南长沙电信你在申请页面找一下上行速率看看,其他地区没写的也有得是。真没有人上门给过合同,我发誓,否则天打雷劈
@dototototo
就是在网上提供电话和地址提交一下,然后第二天就有师傅上门来安装,从头至尾都不用去营业厅,网上的申请页面也没有任何地方说到上行速率的问题。不都是这样吗?哪来的合同?发票还是有的,没什么好担心的
那么多人拿合同说事,我办宽带压根就没见过合同,都是网上申请的,就算有合同也不会写上行速率
2020-12-30 00:47:08 +08:00
回复了 zictos 创建的主题 Python Python 如何一次性终止某个子进程下面的所有子进程?
15 楼写错了,“进程”二字全部写成了“线程”
2020-12-30 00:43:45 +08:00
回复了 zictos 创建的主题 Python Python 如何一次性终止某个子进程下面的所有子进程?
@yucongo #13
可用,不过你的代码好像根本描述的效果不一样,我刚自己写着尝试了一下。把下面代码中的“[四空格]”替换成真正的 4 个空格就可以直接运行了
■■■■■■■■分割■■■■■■■■■■



from multiprocessing import Process
import psutil, os, time

def test1():
[四空格]print('我是主线程创建的第一个子线程,我的 pid 是%s' % os.getpid())
[四空格]#在第一个子线程下面继续创建子线程
[四空格]p2 = Process(target=test2)
[四空格]p2.start()
[四空格]time.sleep(1000)

def test2():
[四空格]print('我是子线程创建的子线程,是主线程的孙线程,我的 pid 是%s' % os.getpid())
[四空格]#在第二个子线程下面继续创建子线程
[四空格]p3 = Process(target=test3)
[四空格]p3.start()
[四空格]time.sleep(1000)

def test3():
[四空格]print('我是主线程的孙线程创建的子线程,我的 pid 是%s' % os.getpid())
[四空格]time.sleep(1000)

if __name__ == '__main__':
[四空格]#创建子线程 p1
[四空格]p1 = Process(target=test1)
[四空格]p1.start()

[四空格]#获取子线程 p1 的 pid
[四空格]pid = p1.pid

[四空格]#等待 4 秒后获取子线程 p1 下面所有子线程的 pid
[四空格]time.sleep(4)
[四空格]pidlist = psutil.Process(pid).children(recursive=True)
[四空格]print('pid 为%s 下面的所有子线程为%s' % (pid, pidlist))
2020-12-29 23:43:41 +08:00
回复了 zictos 创建的主题 Python Python 如何一次性终止某个子进程下面的所有子进程?
@tonic #6
其实把子进程设为守护进程就可以让子进程在父进程被杀死时自动退出,但守护进程下面不能再创建子进程了。
p = Process(target=test) #创建子进程 p
p.daemon = True #把子进程 p 设为守护进程
p.start()
2020-12-29 19:14:08 +08:00
回复了 zictos 创建的主题 Python Python 如何一次性终止某个子进程下面的所有子进程?
笨办法不是没有,比如每创建一个子进程就把子进程的 pid 以及归属哪个父进程的信息写入全局变量中或写入数据库或者写入文本中,然后结束时一个个判断 pid 属于哪个分组并且判断是否存在就行了。只是不知道有没有更简单的,可能有,但是没发现。另外如果是第三方模块创建的子进程这么做就不行了
1 ... 105  106  107  108  109  110  111  112  113  114 ... 132  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3208 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 11:32 · PVG 19:32 · LAX 04:32 · JFK 07:32
Developed with CodeLauncher
♥ Do have faith in what you're doing.