2015-06-17 5:11 GMT-03:00 Hermann Hamann <hermann-ham...@web.de>:
>
> I want to suggest a small change to pyusb to improve speed.
> Currently you can only provide an array.array buffer to put the USB data
> into.
> I use the multiprocessing feature and the final destination of the USB data
> is a mmap.mmap
> Object. I would like to specify this as a receive buffer to save a pickle
> and
> unpickle operation.
> It is not so difficult to use the pyapi.PyObject_GetBuffer function to
> retrieve address and length
> of any buffer protocol compliant object.
> So this array restriction should be lifted, I assume there are more users
> who would
> appreciate this change. I would not like to distribute my software with a
> modified pyusb.
> Sincerely
> Hermann Hamann
>
> Here follows the modifications I made:
> -----------------------------------------
> # in backend1.py, similar for other backends
> from ctypes import *
> from struct import unpack
> getBuffer = pythonapi.PyObject_GetBuffer
> getBuffer.argtypes = [py_object, c_void_p, c_int]
> view = create_string_buffer(11*sizeof(int))
> def getBufferInfo(someObject):
>     pointer_to_sO = py_object(someObject)
>     result = getBuffer(pointer_to_sO,view,1) # flag writeable
>     ### this call can raise an Exception. However this would be a
> consequence
>     ### of an invalid caller, so no recovery is possible and simply let it
>     ### crash, the message is helpful.
>
>     if result != 0 : return None,None
>
>     bufadr,objadr,buflen,itemsize,readonly,ndim,bformat,shape,strides,\
>       suboffsets,internal =  unpack("11I",view)
>
>     result = pythonapi.PyBuffer_Release(string_buffer)
>     return (bufadr,buflen)
>
> # and some lines later
>     def __read(self, fn, dev_handle, ep, intf, buff, timeout):
>         ### !!!! changed address, length = buff.buffer_info()
>         address,length = getBufferInfo(buff)
>         ##length *= buff.itemsize changed
>
> ----------------------------------
> # in core.py
>         if isinstance(size_or_buffer,int):
>

Hi,

Could you please open a Pull Request or, if you are not willing to
supply a patch, an issue detailing your proposal?



-- 
Best Regards,
Wander Lairson Costa

------------------------------------------------------------------------------
_______________________________________________
pyusb-users mailing list
pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users

Reply via email to