In POSIX C we can use writev to write multiple arrays at once to a file descriptor. This is useful when you have to concatenate multiple buffers in order to form a single message to send through a socket (think of a HTTP header and body, for instance). This way I don't need to call send twice, once for the header and once for the body (what prevent the messages to be split in different frames on the wire), nor I need to concatenate the buffers before sending.
My question is, is there a Python equivalent?
Python supports os.writev() as well as sendmsg(). These functions are atomic, so are equivalent of calling write() and send() respectively with concatenated buffer. 
There is TCP_CORK. You may say kernel not to send partial frames until un-corked.

Using either technique, you may have control over partial TCP frames.
Scatter/gather socket write in Python