multiprocessing
Задача состоит в том что бы послать одновременно два запроса, тот запрос который вернет ответ первым должен этот ответ передать в главный процесс и завершиться, тот кто не успел передать запрос, должен умереть. Проблема в том, что не могу убить дочерний процесс из дочернего, так как он не знает о его существовании
def ds(topic):
print(mqtt.mqtt_pub(message.domen, message.user_mqtt, message.password_mqtt, topic, "cmd1"))
print (current_process().name)
if current_process().name == '1':
proc2.terminate()
else:
proc.terminate()
start_time = time.time()
proc = Process(target=ds, args=(topic1,), name='1')
proc2 = Process(target=ds, args=(topic2,), name='2')
proc.start()
proc2.start()
Ответы (1 шт):
Автор решения: vadim vaduxa
→ Ссылка
import multiprocessing, time
def ds(x):
time.sleep(x)
return x
if __name__ == '__main__':
args = [5, 2]
p = multiprocessing.Pool(processes=len(args))
print(next(p.imap_unordered(ds, args)))
p.close()
print('end')
out
2
end