Skip to content

Threaded test succeeds on pytest and fails on tox #539

Open
@kshyatt-aws

Description

@kshyatt-aws

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions