マルチプロセッシング時に、このPythonコードを確認してください:私はCtrlキーを押しながらCを(実行後に2秒を待って - みましょうプロセスの実行)を押すと奇妙な問題の要求を使用して
#!/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()
、それは停止しません。輸入注文を変更すると:
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
多分、あなたはいくつかのモジュールまたは関数名(time?)を上書きするでしょう。 "from .. import .."の使用をやめ、 "time.time()"のような完全修飾名を使用してください。これはあなた自身の問題を解決するかもしれません( – snies