JuliaPy / JuliaPy/PythonCall.jl

Threaded test succeeds on `pytest` and fails on `tox`

オープン
#539 コメント 19 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug
主要言語
Julia
スター
1.1k
フォーク
86
平均マージ
1日 22時間
マージ済み PR(30日)
3

説明

**Affects:** JuliaCall

**Describe the bug**
When I run the following MWE, the code succeeds when run under `pytest` but hangs forever under `tox`, presumably because `pytest` is launching the test from the main thread? I have `JULIA_NUM_THREADS` set to `auto`.

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

def test_sample():
jl.seval("""
function my_sqr()
a = rand(20, 20)
Threads.@threads for ii in 1:size(a, 1)
for jj in 1:size(a, 2)
a[ii,jj] = a[ii,jj]^2
end
end
return
end
""")

pool = ThreadPoolExecutor(2)

fs = {pool.submit(jl.my_sqr._jl_call_nogil): ix for ix in range(10)}
for future in as_completed(fs):
rank = fs[future]
results = future.result()
print(results)
```
If I run
`bs = [my_sqr() for ix in range(10)]`

instead in the test, everything works fine in both `tox` and `pytest`.

**Your system**
This is on PythonCall/juliacall 0.9.22 and Julia 1.10.4, Python 3.10.14, Mac M2.

**Additional context**
Add any other context about the problem here.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。