JuliaPy / JuliaPy/PythonCall.jl
juliacall: Can not use `@show` and `println` in the callback function of ros.py
- Dominant language
- Julia
- Stars
- 1.1k
- Forks
- 86
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 3
Description
**Affects:** JuliaCall
**Describe the bug**
When I use `@show` and `println` in the julia function which is called by the callback function of ros.py, the program becomes unresponsive.
Python `test.py`:
```python
#!/usr/bin/env python3
#coding: utf-8
import rospy
import time
import numpy as np
from std_msgs.msg import Char
from juliacall import Main as jl
def solve(data):
rospy.loginfo("==================== Start ... ======================")
xs = jl.call_ext()
print("len(xs) = ", len(xs))
def Solver_Interface():
rospy.init_node('solver_interface', anonymous = True)
rospy.Subscriber('test', Char, solve, queue_size=1) # can not callback successfully.
jl.include("./test.jl")
time.sleep(1.0)
solve(None) # can call successfully.
rospy.spin()
Solver_Interface()
```
Julia `test.jl`:
```julia
function call_ext()
@show "Hello"
@show "World"
return [1,2,3]
end
```
Run the Python `python test.py` in a terminal.
Run `rostopic pub /test std_msgs/Char "data: 0"` in a new terminal to do ros subscriber's callback.
The text printed in the terminal is:
```
$ python test.py
[INFO] [1711030056.700593]: ==================== Start ... ======================
"Hello" = "Hello"
"World" = "World"
len(xs) = 3
[INFO] [1711030086.854242]: ==================== Start ... ======================
"Hello" =
```
Finally, `Hello` is not printed completely, the this terminal becomes unresponsive.
Contributor guide
No contributing guide indexed for this repository
Research direction
Reproduce the callback behavior with the provided test.py and test.jl, first comparing the direct solve(None) call with the rospy subscriber callback. Trace how output from the Julia call is handled in the callback, and consider the issue done when @show/println output completes and the callback returns without making the terminal unresponsive.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia, python
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100