微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用请求和多处理时出现奇怪的问题

请检查这个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之后停止。 为什么它不停止/杀死第一个例子?

这是一个错误或function?

如何使用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)

查看来自gevent仓库的代码获取详细信息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐