How to get Python multiprocessing module working on windows?
Edit, this workaround is no longer needed as of 2.91.

This looks like a kind of ms-windows specific problem... at least a conflict with having an embedded Python interpreter and the environment which multiprocessing expects.
(its not exactly a bug, in that its not like Blender devs can fix some mistake to get this working).
Currently multiprocessing makes the assumption that its running in python and not running inside an application.

I managed to get multi-processing working on ms-windows, doing some workarounds.

sys.executable needs to point to Python executable.
The scripts __file__ needs to point to a file on-disk(not always the case - when executing a text block for example).

Heres an example of a workaround:
import sys
# are we running inside Blender?
bpy = sys.modules.get(&quot;bpy&quot;)
if bpy is not None:
    sys.executable = bpy.app.binary_path_python
    # get the text-block's filepath
    __file__ = bpy.data.texts[__file__[1:]].filepath
del bpy, sys

# end workaround!
# --------------------------------------------------

# Example from
# https://docs.python.org/3/library/multiprocessing.html
from multiprocessing import Process
import os

def info(title):
    print(title)
    print('module name:', __name__)
    if hasattr(os, 'getppid'):  # only available on Unix
        print('parent process:', os.getppid())
    print('process id:', os.getpid())

def f(name):
    info('function f')
    print('hello', name)

def main():
    info('main line')
    p = Process(target=f, args=('bob',))
    p.start()
    p.join()


if __name__ == '__main__':
    main()