请检查这个Python代码:
#!/usr/bin/env python import requests import multiprocessing from time import sleep,time from requests import async def do_req(): r = requests.get("http://w3c.org/") def do_sth(): while True: sleep(10) if __name__ == '__main__': do_req() multiprocessing.Process( target=do_sth,args=() ).start()
当我按Ctrl-C(运行后等待2秒 – 让进程运行),它不停止。 当我将import订单更改为:
from requests import async from time import sleep,time
它在Ctrl-C之后停止。 为什么它不停止/杀死第一个例子?
如何使用subprocess停止由单个脚本产生的所有subprocess
为什么我有更多的线程比在Linux下py3k multiprocessing中要求我的池的进程多?
为什么Linux不使用光纤而不是先发制人的多任务处理?
Bash:在多个核心上运行相同的程序
Python脚本使用while循环来保持更新作业脚本,并在队列中多处理任务
笔记:
是的,我知道,我没有在这个代码中使用asynchronous,这只是简单的代码。 在真实的代码中,我使用它。 我这样做是为了简化我的问题。
按下Ctrl-C后,有一个新的(子)进程正在运行。 为什么?
multiprocessing.__version__ == 0.70a1 , requests.__version__ == 0.11.2 , gevent.__version__ == 0.13.7
线程和进程ID的值范围是多less?
Windows Server / Datacenter:设置> 64核心的cpu亲和力
我怎样才能从孩子的过程中获得价值?
使用os.kill将SIGINT发送到Pythonsubprocess,就像按Ctrl + C一样
需要在Windows / Python中快速创build大量的新进程
请求异步模块使用gevent。 如果你看一下gevent的源代码,你会发现它修补了许多Python的标准库函数,包括sleep:
导入过程中的request.async模块执行:
from gevent import monkey as curIoUs_george # Monkey-patch. curIoUs_george.patch_all(thread=False,select=False)
看看gevent的monkey.py模块,你可以看到:
https://bitbucket.org/denis/gevent/src/f838056c793d/gevent/monkey.py#cl-128
def patch_time(): """Replace :func:`time.sleep` with :func:`gevent.sleep`.""" from gevent.hub import sleep import time patch_item(time,'sleep',sleep)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。