JuliaPy / JuliaPy/PythonCall.jl

IO from python-spawned threads causes deadlocks

Aberta
#540 1 comentário 0 reações 0 responsáveis Ver no GitHub
bug
Linguagem predominante
Julia
Estrelas
1.1k
Forks
86
Merge médio
1d 22h
PRs com merge (30d)
3

Descrição

**Description**

Carrying over from [#539](https://github.com/JuliaPy/PythonCall.jl/issues/539#issuecomment-2293753477)

The following code reaches a deadlock:

```python
from concurrent.futures import ThreadPoolExecutor, as_completed
from juliacall import Main as jl

jl.seval(
"""
function my_sqr()
println("Julia get's stuck at this print statement issued from thread $(Threads.threadid())")
a = rand(10)
for ii in 1:size(a, 1)
a[ii] = a[ii]^2
end
return sum(a)
end
"""
)

pool = ThreadPoolExecutor(2)

fs = {pool.submit(jl.my_sqr): ix for ix in range(10)}
for future in as_completed(fs):
print("running")
rank = fs[future]
results = future.result()
print("done")
print(results)
```

**Potential Fix**

Adding `ccall(:jl_enter_threaded_region, Cvoid, ())` as suggested in https://github.com/JuliaPy/PythonCall.jl/issues/539#issuecomment-2295200264 fixes this issue but not the original one of #539.
PythonCall may consider to invoke `jl_enter_threaded_region` behind the scenes.

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.