Пожалуйста, проверьте этот питон код:Странные проблемы при использовании запросов и мультипроцессорных
#!/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
Возможно, вы перезаписываете некоторые имена модулей или функций (время?). Попытайтесь прекратить использование «from .. import ..» и используйте полные имена, такие как «time.time()», возможно, это решает вашу проблему (не пробовал сам) – snies