callbacks of python methods across threads doesn't work
- Vorherrschende Sprache
- Go
- Sterne
- 2.3k
- Forks
- 136
- Ø Merge
- 14 Min.
- Gemergte PRs (30 T.)
- 2
Beschreibung
It works fine for functions, just not methods. There is some ambiguity about how the self argument is handled for methods, but presumably that is the crux of the problem.
Tried the following (see bind/symbols.go):
```Go
bstr := fmt.Sprintf("var %s *C.PyObject\n", varnm)
bstr += fmt.Sprintf("_pyargstidx := 0\n")
bstr += fmt.Sprintf("_pyargidx := C.long(0)\n")
if methvar != "" {
bstr += fmt.Sprintf("if C.gopy_method_check(%s) != 0 {\n", methvar)
bstr += fmt.Sprintf("\tC.gopy_incref(%s)\n", methvar)
bstr += fmt.Sprintf("\t%s = C.PyTuple_New(%d)\n", varnm, sz+1)
bstr += fmt.Sprintf("\tC.PyTuple_SetItem(%s, 0, C.PyMethod_Self(%s))\n", varnm, methvar)
bstr += fmt.Sprintf("\t_pyargstidx = 1\n")
bstr += fmt.Sprintf("\t%[1]s = C.PyMethod_Function(%[1]s)\n", methvar)
bstr += fmt.Sprintf("} else {\n")
bstr += fmt.Sprintf("\t%s = C.PyTuple_New(%d)\n", varnm, sz)
bstr += fmt.Sprintf("}\n")
}
```
per this: https://www.reddit.com/r/Python/comments/3618cd/calling_back_python_instance_methods_from_c/
but didn't have any different results relative to just the basic CallObject version.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Bewertung
Dieses Issue wurde noch nicht bewertet.