Sto provando asyncio e devo mescolarlo con un normale codice di blocco multi-thread, quindi ho bisogno di scaricare l'esecuzione usando run_in_exector.Il loop.run_in_executor di asyncio è thread-safe?
asyncio docs warn that "most functions" aren't threadsafe e che call_soon_threadsafe
è l'unica funzione thread-safe. Ce ne sono altri ancora, come Future.add_done_callback
, che sono documentati esplicitamente come thread-safe. Poi ha una frase in seguito che dice "puoi usare run_in_executor per eseguire callback in altri thread", ma non commenta specificamente la sicurezza del thread.
run_in_executor non è doc per essere thread-safe, ma guardando la fonte, sembra che sia thread-safe se vengono presi i giusti percorsi di codice.
Qualcuno sa se è supposto essere thread sicuro, ma non è documentato per essere in quel modo?
Che cosa si intende per "thread-safe" in questo contesto? La documentazione usa quel termine per indicare se è sicuro chiamare un dato metodo da un thread esterno a quello che esegue il ciclo di eventi 'asyncio'. Probabilmente non è quello che stai chiedendo qui, però, vero? – dano
Questo è esattamente quello che intendevo. Ho un codice multi thread già esistente e sto cercando di usare asyncio con esso, quindi ho bisogno di un modo thread-safe per programmare il codice di blocco. –