On Jul 28, 4:03 pm, Thomas Heller <[EMAIL PROTECTED]> wrote: > waldek schrieb: > > > > > Hi, > > > I'm trying to handle data passed to Py Callback which is called from > > C dll. Callback passes data to another thread using Queue module and > > there the data are printed out. > > > If data is printed out in a callback itself it's ok. If I put on > > queue and next get from queue in another thread script prints some > > trash. Looks like the data is released when callback returned. I tired > > to make d = copy.deepcopy(data), but it does not work - I got nothing. > > Any idea why it's happening ? > > > --------------------- main thread -------- > > def callback(data, size): > > myqueue.put((data, size)) > > > mydll = cdll.MyDLL > > cbproto = CFUNCTYPE(c_int, POINTER(c_char), c_int) > > mycallback = cbproto(callback) > > > mydll.RegisterCallback(mycallback) > > > ---------------------------------- thread listener > > ---------------------- > > > while True: > > data, size = myqueue.get() > > print "***", data[:size] > > > ------------------------------------------------------------------------------ > > I guess your code would work if you change it in this way: > > > def callback(data, size): > > myqueue.put(data[:size]) > > while True: > > data = myqueue.get() > > print "***", data > > Thomas
Both solutions work fine. The secon is nicer :) Thanks -- http://mail.python.org/mailman/listinfo/python-list