この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