arduino due-Python interfacing for high speed data rate
There's two things you need to know:


The Serial.write(buf, len) function sends the raw data - one byte for every "len" count.
On the Due integers are 32-bits, so each one takes 4 bytes.


So first you need to define how big the numbers are you'll be dealing with and use data types that are big enough without being wasteful - you have 3 choices: char, short and int - 8, 16 and 32 bits respectively.


Values between 0 and 255 use an unsigned char (uint8_t)
Values between -128 and 127 use a signed char (int8_t)
Values between 0 and 65535 use an unsigned short (uint16_t)
Values between -32768 and 32767 use a signed short (int16_t)
Values between 0 and 4,294,967,295 use an unsigned int (uint32_t)
Values between −2,147,483,648 and 2,147,483,647 a signed int (int32_t)


One very tricky thing with this kind of binary data transfer is knowing where a value starts and ends.  You don't get that kind of issue with ASCII representations as you have a line feed and/or a carriage return after each full value and the range of valid characters that make up a value is very narrow and can never contain the delimiting character.  You don't have that luxury with binary transfers as there is no byte value that can't appear in a data stream.  However, there could be byte sequences that could never appear in the data stream - numbers you know you'll never be using that could form part of a synchronizing header (say, in hexadecimal, 0xFF 0xFF 0xFF 0xFF 0x00 0x00 0x00 0x00 - or in signed shorts that would be a sequence of 65535 65535 0 0) - once you see that sequence of bytes you know you're lined up with your data stream and can receive it byte by byte and build up the right sized values from that.

You can estimate your transfer time by working with the baud rate and knowing the data size.  For instance, to transfer 1000 short (16 bit) values at 250000 baud should take around:


1000 * 2 = 2000 bytes
250000 baud = 25000 bytes per second (8 bits for the byte, 2 bits for the start and stop bit)
2000 / 25000 = 0.08s