callbacks of python methods across threads doesn't work
- Lingua principale
- Go
- Stelle
- 2.3k
- Fork
- 136
- Merge medio
- 14m
- PR unite (30g)
- 2
Descrizione
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.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Valutazione
Questa issue non è ancora stata valutata.