请检查这个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 秒 - 让进程运行)时,它不会停止。当我将导入顺序更改为:
from requests import async
from time import sleep, time
它在 Ctrl-C 之后停止。为什么它在第一个示例中没有停止/杀死?
这是一个错误还是一个功能?
笔记:
- 是的,我知道,我没有在这段代码中使用异步,这只是精简代码。在实际代码中我使用它。我这样做是为了简化我的问题。
- 按下 Ctrl-C 后,有一个新的(子)进程正在运行。为什么?
multiprocessing.__version__ == 0.70a1
,requests.__version__ == 0.11.2
,gevent.__version__ == 0.13.7